2017-07-12 8 views
-2

ソートするJSON文字列があります。 'Name'フィールドでソートしたいのですが。私の人生はこれを行うコードを見つけることができません。JSONをキー以外のフィールドで並べ替えます。

未ソート:

{"RU": {"Name": "Russian", "TextDirection": "ltr"}, "FR": {"Name": "French", "TextDirection": "ltr"}, "AR": {"Name": "Arabic", "TextDirection": "rtl"}}

ソート:

{"AR": {"Name": "Arabic", "TextDirection": "rtl"}, "FR": {"Name": "French", "TextDirection": "ltr"}, "RU": {"Name": "Russian", "TextDirection": "ltr"}}

アップデート:@ジョンとして

rsharpeと@martineauは指摘しています。私は配列やリストを使う必要があった。私はその構造についてあまり心配していません。元々ソート順を乱していたのは、jsonへの変換でした。代わりに配列を使用することで、jsonは並べ替え順序に悩まされませんでした。

[{"Code": "AR", "Name": "Arabic", "TextDirection": "rtl"}, {"Code": "FR", "Name": "French", "TextDirection": "ltr"}, {"Code": "RU", "Name": "Russian", "TextDirection": "ltr"}] 
+0

JSONオブジェクト(およびそれらがマッピングされているPythonの辞書)が、順序を保証していません。 – jonrsharpe

+0

@jonrsharpe:私はkeyへの参照を削除しました。 – SteveB

+0

なぜあなたはこれが欲しいと思いますか? –

答えて

1

ユーザーはOrderedDictを使用して、順序付けされたキーを持つ辞書をPythonで実装できます。

ただし、本質的に辞書(ハッシュテーブル)の順序がないため、JSONオブジェクトが他のアプリケーションによって順番に読み込まれることは保証できません。

したがって、キーを反復すると、PythonとJavaScriptの両方に特定のクラスを使用しない限り、または辞書が静的な配列に辞書を置く場合を除き、順序保証はありません。それはあなたが何を意味するかは明らかではありませんので、

https://docs.python.org/3/library/collections.html#collections.OrderedDict

How do I sort a list of dictionaries by values of the dictionary in Python?

+0

2番目のリンクはこの問題とは関係ありません。関連するリストはありません。 –

+0

これは以前の回答の参考文献です。 – Fabien

関連する問題