1

こんにちは、私はPythonで次のコードを持っています:

import json
jsonpost = json.loads('{"Player": {"_id": "3","firstName":"kim","surname":"jones"},"newTable": {"_id": "4","SurName": "abcd"}}')

for key in jsonpost.keys():
    for innerkey in jsonpost[key]:
        print innerkey

私の質問は、内部キーを出力すると、jsonpost ['Player'] のキーの順序が次のようになる理由です。

_id , surname, firstName
4

5 に答える 5

2

Python 辞書は、ハッシュ テーブルを使用して内部的に実装されています。これは、キーの順序が保持されないことを意味します。これは問題ですか?

于 2013-07-31T15:30:02.490 に答える
1

辞書のキーが同じ順序になることはありません。コードで一貫して同じ順序にしたい場合は、次のことができます

sorted(jsonpost.keys())
于 2013-07-31T15:29:42.820 に答える
0

Python 辞書は本質的に順序付けされていないため、印刷するとキーが順不同になる可能性があります。

順序が重要な場合は、次を使用できますOrderedDict

import collections
jsonpost = collections.OrderedDict(sorted(jsonpost.items()))

または、for ループを次のように変更できます。

for key in sorted(jsonpost.keys()):
    for innerkey in jsonpost[key]:
        print innerkey
于 2013-07-31T15:31:31.220 に答える
0

辞書の順序は未指定として指定されています。つまり、python 2.7 以降を実行している場合はsort(whatever.keys())、辞書を使用して順序付けすることができます。collections.OrderedDict

于 2013-07-31T15:34:51.763 に答える