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

标签 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

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

最佳答案

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

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

相关文章:

Python 解析 Minecraft 数据包

java - Java 中最接近嵌套字典(python)的东西是什么?

python - 在不创建列表的情况下填充一个 numpy 数组

python - 如何在不使用任何 for 或 while 循环的情况下将列表列表打印到 python 中的一个列表中?

python - Python套接字: Error receive data

python - TensorFlow : NotFoundError: Resource AnonymousIterator Error

javascript - 如何强制浏览器在前6个并行连接中预取图像

performance - 玩! 2.0 性能指标

c++ - 对于基本数据类型,按值传递还是按引用传递更好?

r - 将可变长度列表转换为边缘列表 igraph R