您好我在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
答案 0 :(得分:2)
Python字典在内部使用哈希表实现。这意味着不保留键顺序。这是一个问题吗?
答案 1 :(得分:1)
字典中的键永远不会以相同的顺序排列,如果您希望它们始终按照相同的顺序排列代码,您可以这样做
sorted(jsonpost.keys())
答案 2 :(得分:1)
JavaScript的JSON
和Python的dict
都有排序的概念。您可以在Python中使用collections.OrderedDict
来逃避它,但JavaScript没有这样的替代方案。
答案 3 :(得分: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
答案 4 :(得分:0)
字典排序被指定为未指定,您可以sort(whatever.keys())
或者您可以使用和排序字典,例如collections.OrderedDict
如果您运行的是python 2.7或更高版本。