快速算法计算两个列表的增量

sat*_*oru 11 python algorithm

我有两个专辑名单,按一些分数排序.

albums_today = ['album1', 'album2', 'album3']
albums_yesterday = ['album2', 'album1', 'album3']
Run Code Online (Sandbox Code Playgroud)

如何计算列表顺序的变化并得到类似的结果

{'album1':1, 'album2':-1, 'album3':0}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ooy 6

>>> albums_today = ['album1', 'album2', 'album3']
>>> albums_yesterday = ['album2', 'album1', 'album3']
>>> D = dict((k,v) for v,k in enumerate(albums_yesterday))
>>> dict((k,D[k]-v) for v,k in enumerate(albums_today))
{'album1': 1, 'album3': 0, 'album2': -1}
Run Code Online (Sandbox Code Playgroud)

在Python2.7或Python3中,它可以更简单地编写

>>> albums_today = ['album1', 'album2', 'album3']
>>> albums_yesterday = ['album2', 'album1', 'album3']
>>> D = {k:v for v,k in enumerate(albums_yesterday)}
>>> {k:D[k]-v for v,k in enumerate(albums_today)}
{'album1': 1, 'album3': 0, 'album2': -1}
Run Code Online (Sandbox Code Playgroud)


sat*_*oru 0

D = dict((title, rank) for rank, title in enumerate(albums_yesterday))
for rank, title in enumerate(albums_today):
    D[title] = D[title] - rank
Run Code Online (Sandbox Code Playgroud)