d = { 'a':{'k':1, 'b':'whatever'}, 'b':{'k':2, 'b':'sort by k'} }
この辞書をkで降順に並べ替えるには、pythonで並べ替えたいですか?Python:この辞書をソート(dictのdict)
少しトリッキー、助けてください。
d = { 'a':{'k':1, 'b':'whatever'}, 'b':{'k':2, 'b':'sort by k'} }
この辞書をkで降順に並べ替えるには、pythonで並べ替えたいですか?Python:この辞書をソート(dictのdict)
少しトリッキー、助けてください。
dict
は順不同です。だから、それらを直接ソートする方法はありませんが、あなたは(キー、値)タプルのリストにdict
を変換する 喜んでいる場合は、あなたがこれを行うことができます:
In [9]: d
Out[9]: {'a': {'b': 'whatever', 'k': 1}, 'b': {'b': 'sort by k', 'k': 2}}
In [15]: sorted(d.items(),key=lambda x: x[1]['k'],reverse=True)
Out[15]: [('b', {'b': 'sort by k', 'k': 2}), ('a', {'b': 'whatever', 'k': 1})]
をこのexcellent mini-howtoは、使用方法を説明しますkey
パラメータの
辞書は「ソート」されていません。それは意味のある概念ではありません。概念的には、キーと値は全く「順序付け」されていないので、それらの順序を変更することはできません。
が、私たちは、私を変換することができます。それを反復処理の意図のための辞書は、あなたがこれを行うことができます他のシーケンスタイプに変換してソートして辞書に戻します。 – user469652
@ user469652:どの時点でソートされなくなりますか。 –
python 2.7以降を使用している場合は、OrderedDictを使用してください。
通常の辞書と同じですが、項目が挿入された順序を覚えています。順序付けされたディクショナリを反復処理する場合、アイテムはキーが最初に追加された順序で返されます。見る、のpython 2.4またはより低いため、同じ効果の何かを達成しようとするために例から
>>> # regular unsorted dictionary
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
>>> # dictionary sorted by key
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
:
ドロップPy2.7の新しいコレクションに代わるものです.OrderedDictはPython 2.4で動作します-2.6。
私はPython 2.6を使っています.... – user469652
@ user469652:これをエミュレートするpypiまたはrecipeへのリンクを追加しました。これはPython 2.6で動作します – pyfunc
あなたが並べ替えしたい場合は、値(V)と優先度(P)を含むサブ辞書(D1およびD2)と辞書(データを)持っている場合はい
data = { "d1": { "v": "hello", "p": 3}, "d2": {"v": "hi again", "p": 1},}
for item in sorted(data.keys(), key=lambda x: data[x]['p']):
print item
from collections import OrderedDict
from operator import *
d = { 'a':{'k':1, 'b':'whatever'}, 'b':{'k':2, 'b':'sort by k'} }
sorted_d = OrderedDict(sorted(d.items(), key=lambda x: getitem(x[1], 'k')))
'x [1] ['k']'について説明できますか?私は['k']の部分を理解していますが、x [1]とは何ですか? – user225312
リストオブジェクトは呼び出し可能ではないと言いますか? – user469652
@A: 'dict.items()'は(key、value)の2タプルのリストを返します。 –