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 回答
1

JavaScriptJSON和 Pythondict都具有排序的概念。您可以collections.OrderedDict在 Python 中使用它来摆脱它,但 JavaScript 没有这样的替代方案。

于 2013-07-31T15:30:10.630 回答
0

字典排序被指定为未指定,您可以sort(whatever.keys())或您可以使用和排序字典,即collections.OrderedDict如果您正在运行 python 2.7 或更高版本。

于 2013-07-31T15:34:51.763 回答
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 回答