最近Pythonでプログラミングを開始しましたが、私は答えが出てこない質問があります。私はさまざまなキーと値を持つ辞書類型のリストを持っています(以下を参照)。リストに表示される辞書の順序を並べ替える必要があります。 list_one
:辞書のリストを2つの基準で並べ替え
list_one = [{'country': 'Spain', 'id': 'v1', 'key2': 'value2'},
{'country': 'France', 'id': 'v4', 'key2': 'value2'},
{'country': 'China', 'id': 'v4', 'key2': 'value2'},
{'country': 'Russia', 'id': 'v3', 'key2': 'value2'},
{'country': 'Australia', 'id': 'v2', 'key2': 'value2'},
{'country': 'China', 'id': 'v3', 'key2': 'value2'},
...
]
まず、ソートの 'ID' の値(v1
、v2
、v3
、...)(私は罰金うまくできています)。
さらに、id
の値が同じ場合は、'country'
キーの値に従って並べ替えます。私はこれらをアルファベット順にソートしたくありません。私はこれらの国に設定された値に基づいてソートできるようにしたいと思います。したがって、例えば、France = 1
,China = 2
,Australia = 3
,Spain = 4
,Russia = 5
のようになります。
辞書の順序は、2番目の の例のようになります。 list_two
:
[{'country': 'Spain', 'id': 'v1', 'key2': 'value2'},
{'country': 'Australia', 'id': 'v2', 'key2': 'value2'},
{'country': 'China', 'id': 'v3', 'key2': 'value2'},
{'country': 'Russia', 'id': 'v3', 'key2': 'value2'},
{'country': 'France', 'id': 'v4', 'key2': 'value2'},
{'country': 'China', 'id': 'v4', 'key2': 'value2'}
...
]
それらdictsは以下のようにして、いくつかの「暗黙の値」セットにし、最初の「ID」キーの値に、リストに表示される順序をソートするニシキヘビの方法があります国は?
list_two = sorted(list_one, key=lambda k: k['id'])
おかげで、それは素晴らしい作品!しかし1つの余分な質問。 'ids'の注文がすでに正しく行われていて、同じ「国」でそれらの辞書を並べ替えるだけの場合はどうなりますか? – PDavis
@PDavis:フルキーでソートする必要があります。その場合、再ソートについて心配する必要はありません。ソートアルゴリズムPythonは([* Timsort *](https://en.wikipedia.org/wiki/Timsort))ソート済みのサブセクションを利用します。 –
私は同じ「ids」を持つそれらの言い回しを意味しました。 – PDavis