在Python中对字典键进行排序

148

我有一个字典,其中每个键都引用一个整数值。最好的方法是根据这些值将键排序成一个列表吗?


8
这个问题涉及按键排序,而链接的答案是关于按值排序的。 - ForeverWintr
4个回答

358

我喜欢这一个:

sorted(d, key=d.get)

很好,想要一个优雅的解决方案,可以按键排序并返回(键,值)对。而且不需要多次提供字典变量名称(我倾向于使用非常长的描述性变量名称)。d.iteritems() 仍然是最有用的。 - travc

107
>>> mydict = {'a':1,'b':3,'c':2}
>>> sorted(mydict, key=lambda key: mydict[key])
['a', 'c', 'b']

17
my_list = sorted(dict.items(), key=lambda x: x[1])

1
@user815423426,你修改了我的帖子s/list/my_list/,因为"list是Python中的关键字"。你的修改没问题,但是list不是一个关键字(参见https://docs.python.org/3/reference/lexical_analysis.html#keywords),因此我的程序片段会(字节码)编译和运行。然而,它是`__builtins__`命名空间中的名称,使用具有本地语境的变量名来遮蔽该名称是一种不良做法,并且使用全局变量名list覆盖它是可怕的,例如`list = tuple`。 - Jonas Kölker

4
[v[0] for v in sorted(foo.items(), key=lambda(k,v): (v,k))]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接