Python:遍历同时包含相似值的列表和字典的有效方法
Python: Efficient way to iterate over a list and a dictionary simultaneously containing similar values
我有两个数据结构:一个列表和一个 defaultdict 字典。该列表包含 300,000 个数字的无序序列,字典包含与键相同的数字(顺序不同),对应的值是一些小整数。例如,列表可能类似于:l=[500,800,1500] 那么相应的字典类似于 d={800:3, 1500:1, 500:4}。我的目标是创建另一个列表,该列表仅包含字典 d 中每个键的相应值,顺序为 l。对于简单的示例,我想要 return [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]
我有两个数据结构:一个列表和一个 defaultdict 字典。该列表包含 300,000 个数字的无序序列,字典包含与键相同的数字(顺序不同),对应的值是一些小整数。例如,列表可能类似于:l=[500,800,1500] 那么相应的字典类似于 d={800:3, 1500:1, 500:4}。我的目标是创建另一个列表,该列表仅包含字典 d 中每个键的相应值,顺序为 l。对于简单的示例,我想要 return [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]