我有两个数据结构:一个列表和一个 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
有什么办法可以提高效率吗?
最佳答案
遍历列表中的术语,而不是字典中的键值对:
>>> l = [500,800,1500]
>>> d = {800:3, 1500:1, 500:4}
>>> [d[x] for x in l]
[4, 3, 1]
关于Python:迭代同时包含相似值的列表和字典的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710860/