2016-07-08 2 views
0

私はこのような辞書を持っている: キーは文字列で、 値が文字列dictをPythonでその値の1つでソートするには?

my_dict = { 
    'key1': [value11, value12, value13], 
    'key2': [value21, value22, value23], 
    'key3': [value31, value32, value33], 
    'key4': [value41, value42, value43] 
} 

例えばのリストです

dict_0 = { 
'key1' : [lv, 2, abc], 
'key2' : [ab, 4, abc], 
'key3' : [xj, 1, abc], 
'key4' : [om, 3, abc], 
} 

私は値リストの2番目の値に基づいてソートすることがしたかったので、それは次のようにする必要があります:私は価値の一つで、この辞書をソートしたい

dict_0 = { 
'key3' : [xj, 1, abc], 
'key1' : [lv, 2, abc], 
'key4' : [om, 3, abc], 
'key2' : [ab, 4, abc], 
} 

値のリスト、すなわち値* 2、どうしたらいいですか? 私はサイトを広く検索しましたが、同様のケースは見つかりませんでした。

ありがとうございました。

+0

辞書は順序付けられていません。 –

+0

辞書をソートすることはできません。辞書には、その値へのアクセスを可能にするハッシュ可能なキーがあります。あなたが見るかもしれないOrderedDictと呼ばれるものがあります –

+0

できません。可能な解決策については、http://stackoverflow.com/questions/613183/sort-a-python-dictionary-by-valueをチェックするか、Ordered Dictionaryを使用してください。 –

答えて

6

辞書はデータ構造が整理されていないので、ソート済みのものを使用したい場合はOrderedDict()の機能をcollectionsモジュールから使用できます。

>>> dict_0 = { 
... 'key1' : ['lv', 2, 'abc'], 
... 'key2' : ['ab', 4, 'abc'], 
... 'key3' : ['xj', 1, 'abc'], 
... 'key4' : ['om', 3, 'abc'], 
... } 

>>> from collections import OrderedDict 
>>> OrderedDict(sorted(dict_0.items(), key=lambda x: x[1][1])) 
OrderedDict([('key3', ['xj', 1, 'abc']), 
      ('key1', ['lv', 2, 'abc']), 
      ('key4', ['om', 3, 'abc']), 
      ('key2', ['ab', 4, 'abc'])]) 
>>> 
+0

美しく私の問題を解決!受け入れ、おかげで束! – FisherCoder

1

あなたは使用することができます

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

を。これは、最小から最大までの辞書内の各エントリの値によって辞書をソートします。

関連する問題