【问题标题】:Python: efficient way to create a list from dict values with a given order [duplicate]Python:从具有给定顺序的dict值创建列表的有效方法[重复]
【发布时间】:2016-08-22 01:25:42
【问题描述】:

我有一本看起来像这样的字典:

myDict = { "age":value1,"size":value2,'weigth':value3 ... }

我只是想从这个字典中获取一个值列表,但是按照列表定义的某种顺序:

order_list = ["age","weigth","size", ... ]

所以结果会是:

result_list = [value1,value3,value2, ... ]

最简单的方法是这样遍历order_list

for key in order_list:
    result_list.append(myDict[key])

但我相信有一种更有效和更干净的方法来做我想做的事情,因为这种方法很昂贵,原因有两个:

  1. 列列表很长
  2. 我需要这样做 1000 次/秒

【问题讨论】:

  • 与基准相关的线程:stackoverflow.com/questions/18453566/….
  • 我不这么认为,字典是哈希表,所以检索是 O(1),总复杂度是 O(n),这是最优的。所以你可能应该尝试一些完全不同的东西
  • 不,正如@BlackBear 指出的那样,你不会比O(n) 更好。稍加理解可能会被认为更简洁,但不会提高性能。
  • 我为“重复”添加了一个额外的答案

标签: python list dictionary


【解决方案1】:

使用列表推导式更短:

myDict = { "age":"value1","size":"value2",'weigth':"value3"}
order_list = ["age","weigth","size"]
result_list = [myDict[x] for x in order_list]

map 也可以:

# Python 3.x (map returns an iterator)
result_list = list(map(myDict.get, order_list))

# Python 2.x (map returns a list)
result_list = map(myDict.get, order_list)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2015-10-22
    • 2022-12-18
    相关资源
    最近更新 更多