我有一个列表和一本字典:
list1 = ["a", "b", "c", "d"]
dict1 =
{
"a": 4,
"b": 3,
"c": 5,
"d": 9,
"e": 2,
"f": 8
}
我想要做的是根据dict1中的相应值对list1进行排序。
对于上面的例子,我希望列表成为["b", "a", "c", "d"]
,根据它们的值进行排序。
我知道它应该像......
list2 = sorted(list1, key=dict1[x])
但我被困住了:((
任何帮助都将非常感激
答案 0 :(得分:5)
关键参数应该是一个函数。
例如,使用绑定方法dict.__getitem__
或dict.get
:
>>> list1 = ["a", "b", "c", "d"]
>>> dict1 = { "a": 4, "b": 3, "c": 5, "d": 9, "e": 2, "f": 8 }
>>> sorted(list1, key=dict1.__getitem__)
['b', 'a', 'c', 'd']
答案 1 :(得分:4)
你非常接近。 key
需要一个功能;你需要在dict1
中包裹lambda
中的值(@falsetru也指出):
>>> list2 = sorted(list1, key=lambda x: dict1[x])
>>> list2
['b', 'a', 'c', 'd']
答案 2 :(得分:0)
我似乎被打败了规范的解决方案,所以这里有一个不同的方法
from operator import itemgetter
[k for (k, v) in sorted(dict1.items(), key=itemgetter(1)) if k in list1]
['b', 'a', 'c', 'd']
答案 3 :(得分:0)
其他人提出的关键内容非常强大。
但是,我想我的旧计时器正在考虑“为什么不把数据放在类实例列表中并提供__lt__
和/或__cmp__
?”国际海事组织,它会更清楚。