2017-04-25 6 views
2

私はそこにたくさんの質問があることを知っていますが、私はヒット率の列で下の辞書をソートしようとしています。Pythonは特定の列で多次元辞書をソートしています

data = { 
    'a': {'get': 1, 'hitrate': 1, 'set': 1}, 
    'b': {'get': 4, 'hitrate': 20, 'set': 5}, 
    'c': {'get': 3, 'hitrate': 4, 'set': 3} 
} 

私は多くのことを試しましたが、最も有望なのは以下の方法でエラーが出ているようです。

私はこれで何か助けてもらえますか?

ありがとうございます!

答えて

5

反復処理dictのは、あなたが再び辞書にxを探す必要があるので、キーが得られます。

sorted(data, key=lambda x: int(data[x]['hitrate'])) 

あなたも値をしたい場合は、アイテムを並べ替える:

sorted(data.items(), key=lambda item: int(item[1]['hitrate'])) 
3

dictをiterableとして使用すると、キーは反復され、値は返されないため、ラムダのxは "a"、 "b"、および "c"になります。"a"["hitrate"]、 TypeErrorが発生します。あなたの辞書にキーとしてxを使ってみてください。

>>> data = { 
...  'a': {'get': 1, 'hitrate': 1, 'set': 1}, 
...  'b': {'get': 4, 'hitrate': 20, 'set': 5}, 
...  'c': {'get': 3, 'hitrate': 4, 'set': 3} 
... } 
>>> s = sorted(data, key=lambda x: int(data[x]['hitrate'])) 
>>> s 
['a', 'c', 'b'] 
+0

驚くばかり!どうもありがとうございます! –

関連する問題