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

标签 python algorithm

我有两个专辑名称列表,按分数排序。

albums_today = ['album1', 'album2', 'album3']
albums_yesterday = ['album2', 'album1', 'album3']

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

{'album1':1, 'album2':-1, 'album3':0}

最佳答案

>>> 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}

在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}

关于python - 计算两个列表增量的快速算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4251732/

相关文章:

Python 正则表达式 : why doesn't python accept my pattern?

algorithm - 更快的数学算法牺牲准确性

算法: Divide and Conquer (Application of Quick Sort?!)

java - 实现一个简单的 Trie 以进行高效的 Levenshtein 距离计算 - Java

python - 用作索引的数组必须是整数(或 bool )类型

python - Pandas 数据透视表到 One_hot

python - WxPython - 添加新内容时调整 WxFrame 大小?

algorithm - 优化字节对编码

algorithm - 预测点数返回中点圆算法

python - 平滑着色算法