2016-06-12 13 views
0

ここにはペットのdictとその数が記載されています。Python - 値でソートされたdictの項目を表示する

{"Birds" : 2, "Cats" : 3, "Dogs" : 4} 

私は最小の同じペットの数、またはその逆に、同じペットの最大数でソートされた項目を印刷したいです。

所望の出力:

('Dogs', 4) 
('Cats', 3) 
('Birds', 2) 

そして

('Birds', 2) 
('Cats', 3) 
('Dogs', 4) 

はどのようにこれを行うことができますか?

私は何もインポートしたくありません。

for item in sorted(dict.items(), key=lambda x: x[1], reverse=True): 
    print(item) 

lambda x: -x[1]のキーも(逆引きなし)動作するはずです:内蔵の特殊なランキング機能やreverse=True引数でsorted機能を使用して

答えて

0

0

ラムダ式x[1]は、値を表し、x[0]は、キーと値のペアの辞書の辞書です。時にはこれを達成するためのより多くのコードを記述する方がよいビューの初心者の視点から理解する目的のために

from operator import itemgetter 

sorted(d.items(), key=itemgetter(1), reverse=True) 
sorted(d.items(), key=itemgetter(0)) 
0

sorted(d.items(), key=lambda x: x[1], reverse=True) 
sorted(d.items(), key=lambda x: x[0]) 

は、ラムダ式exprせず、operator.itemgetterは同じことを行います。 辞書をソートすることはできないので、各キーと値のペアを取り、簡単な関数でリストを返すことができます。

mydict = {"Birds" : 2, "Cats" : 3, "Dogs" : 4} 
def sortDict(dictionary): 
    sorted_values = sorted(dictionary.values()) 
    sorted_keys = sorted(dictionary.keys()) 
    #sorted_values.reverse() 
    #sorted_keys.reverse() 
    for key, value in zip(sorted_keys, sorted_values): 
     print(key, value) 
sortDict(mydict) 

#文字を削除して、結果を元に戻します。

関連する問題