に基づいて辞書のキーをソート:私は辞書持って異なる値
d = {"A":{"a":1, "b":2, "c":3}, "B":{"a":5, "b":6, "c":7}, "C":{"a":4, "b":6, "c":7}}
を私が最初に基づいて、リスト内のキー「A」、「B」と「C」をソートしたいです「a」の数値のうち、「b」などの数値に基づいてタイが発生すると、
私はそれをどのように行うことができますか?
に基づいて辞書のキーをソート:私は辞書持って異なる値
d = {"A":{"a":1, "b":2, "c":3}, "B":{"a":5, "b":6, "c":7}, "C":{"a":4, "b":6, "c":7}}
を私が最初に基づいて、リスト内のキー「A」、「B」と「C」をソートしたいです「a」の数値のうち、「b」などの数値に基づいてタイが発生すると、
私はそれをどのように行うことができますか?
:
sorted(d, key=lambda key:(d[key]['a'], d[key]['b'], d[key]['c']))
ここに、一般的な解決法がありますあなたは内部の辞書に任意の数の要素を持っています:
sorted(d, key=lambda key:[value for value in sorted(d[key].items())])
>>> d = {"A":{"a":1, "b":2, "c":3}, "B":{"a":5, "b":6, "c":7}, "C":{"a":4, "b":6, "c":7}}
>>>
>>> d.items()
[('A', {'a': 1, 'c': 3, 'b': 2}), ('C', {'a': 4, 'c': 7, 'b': 6}), ('B', {'a': 5, 'c': 7, 'b': 6})]
>>> sorted(d.items(), key=lambda x: [y[1] for y in sorted(x[1].items())])
[('A', {'a': 1, 'c': 3, 'b': 2}), ('C', {'a': 4, 'c': 7, 'b': 6}), ('B', {'a': 5, 'c': 7, 'b': 6})]
そうのようなあなたの辞書のリストを作成します:次に、あなたが考えているものは何でも基準使用してリストを並べ替える
my_list = [(key, value) for item in d.items()]
:
あなたが使用することができますdef sort_function(a, b):
# whatever complicated sort function you like
return True if a > b else False
my_list.sort(sort_function)
質問を編集して最終的なソートリストを追加してください。 – jbsu32
re ad http://stackoverflow.com/questions/613183/sort-a-python-dictionary-by-value?rq=1そしてそこからそれを試してみてください。 –