2011-09-07 78 views
20

可能重复:
Python: Sort a dictionary by value排序值和字典蟒蛇归还钥匙的名单

我有这样一本字典:

A = {'Name1':34, 'Name2': 12, 'Name6': 46,....} 

我想要的清单按值排序的按键,即[Name2, Name1, Name6....]

谢谢!

+0

谢谢,但我搜索之前,我问和答案是不是我所需要的。 – Alejandro

+3

我不同意,有很多类似的问题与你正在寻找的答案。例如。在我所关联的问题中,第二高的投票答案提供了与此处或者最高投票答案相同的解决方案[这些答案](http://stackoverflow.com/questions/3417760/how-to-sort-a-python-dict-by-value)。你可能不得不尝试一些东西,但问题已经在这里了。 –

+0

“答案不是我所需要的”。无用的陈述。现有答案中缺少什么? **他们如何**不完整或误导? **什么**使您的问题独特?请成为**具体**。 –

回答

30

使用sortedget方法的关键(字典键可以通过iterating访问):

sorted(A, key=A.get) 
+4

这是不正确的,因为它只会对键进行排序,而不是按它们的值对键进行排序。 –

+1

但是,这返回按键排序的列表。我需要一个按值排序的键列表。 :) – Alejandro

+2

@David Wolever糟糕,你是完全正确的。固定。 – phihag

1

我会使用:

items = dict.items() 
items.sort(key=lambda item: (item[1], item[0])) 
sorted_keys = [ item[0] for item in items ] 

key参数排序是一个可调用它返回要使用的排序键。在这种情况下,我返回一个(value, key)的元组,但是如果您愿意,您可以返回值(即key=lambda item: item[1])。

+0

另一种解决方案更简单,更易于阅读。 –

2

sorted(a.keys(), key=a.get)

此排序键,并且每个键,使用a.get找到它的排序值使用的值。

+0

请注意,没有必要使用'a.keys',它会生成一个键列表。 'a'(或'a.iterkeys()')已经可以在字典a的键上迭代了。 –

+1

是的,我知道这是没有必要的,但我认为它会更好。我认为字典是成对的容器,而不是容器的钥匙。 –

4

使用sortedkey论证的意见@Felix

sorted(d, key=d.get)