2011-09-07 1 views
20

をキーのリストを返す可能性の重複:
Python: Sort a dictionary by valueソート値とdictのパイソンから

私はこのような辞書があります。

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

キーとしてget方法(辞書のキーはiteratingによってアクセスすることができる)で使用sorted:私が使用したい

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() ')はすでにその辞書のキーに対して反復可能です。 –

+1

ええ、私はそれが不必要だと知っていますが、私はそれが良いと思う。私はdictsをキーのコンテナではなく、ペアのコンテナと考える。 –

4

使用sortedさんkey引数アドバイス@Felixため

sorted(d, key=d.get) 
関連する問題