Python:迭代列表和同时包含类似值的字典的有效方法

时间:2015-02-25 03:57:59

标签: python performance list dictionary

我有两个数据结构:列表和defaultdict字典。该列表包含300,000个数字的无序序列,并且字典包含与具有相应值(一些小整数)的键相同的数字(不是相同的顺序)。例如,列表可能是这样的:l = [500,800,1500]然后相应的字典就像d = {800:3,1500:1,500:4}。我的目标是创建另一个列表,该列表只包含字典d中每个键的相应值,顺序为l。对于简单的例子,我想要返回[4,3,1](不是[3,1,4])。我有一些天真的代码可以运行,但需要花费很长时间来运行300,000个数字。

以下是我所拥有的:

for k,v in d.iteritems():
      for i in xrange(len(l)):
           if(l[i]==k):
                 out[i]=v

有什么方法可以提高效率吗?

1 个答案:

答案 0 :(得分:6)

循环遍历列表中的术语,而不是字典中的键值对:

>>> l = [500,800,1500]
>>> d = {800:3, 1500:1, 500:4}
>>> [d[x] for x in l]
[4, 3, 1]