【发布时间】:2010-10-09 05:11:25
【问题描述】:
我有一个字典,其中每个键都引用一个 int 值。根据值将键排序到列表中的最佳方法是什么?
【问题讨论】:
-
另外,这询问了按键排序,链接的答案是关于按值排序。
我有一个字典,其中每个键都引用一个 int 值。根据值将键排序到列表中的最佳方法是什么?
【问题讨论】:
my_list = sorted(dict.items(), key=lambda x: x[1])
【讨论】:
s/list/my_list/,因为“list 是 python 中的关键字”。您的编辑很好,但 list 不是关键字(c.f. docs.python.org/3/reference/lexical_analysis.html#keywords),所以我的程序片段将(字节码)编译并运行。然而,它是 __builtins__ 命名空间中的一个名称,使用名为 list 的语言环境变量隐藏该名称是不好的做法,并且使用名为 list 的全局变量覆盖它是很糟糕的做法,例如list = tuple.
>>> mydict = {'a':1,'b':3,'c':2}
>>> sorted(mydict, key=lambda key: mydict[key])
['a', 'c', 'b']
【讨论】:
我喜欢这个:
sorted(d, key=d.get)
【讨论】:
[v[0] for v in sorted(foo.items(), key=lambda(k,v): (v,k))]
【讨论】: