Python 为什么json.keys()以不同的顺序获取键
您好,我有以下python代码:Python 为什么json.keys()以不同的顺序获取键,python,json,Python,Json,您好,我有以下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 我的问题
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
字典中的键永远不会以相同的顺序排列,如果希望代码中的键始终以相同的顺序排列,可以这样做
sorted(jsonpost.keys())
字典中的键永远不会以相同的顺序排列,如果希望代码中的键始终以相同的顺序排列,可以这样做
sorted(jsonpost.keys())
Python字典是通过哈希表在内部实现的。这意味着不会保留密钥顺序。这是一个问题吗?Python字典是通过哈希表在内部实现的。这意味着不会保留密钥顺序。这是一个问题吗?JavaScript的
JSON
和Python的dict
都有排序的概念。您可以在Python中使用集合。OrderedDict
可以解决这个问题,但JavaScript没有这样的替代方案。JavaScript的JSON
和Python的dict
都有排序的概念。您可以在Python中使用集合。OrderedDict,但JavaScript没有这样的替代方法。Python字典本身就是无序的,因此当您打印它们时,键可能是无序的
如果订单很重要,您可以使用OrderedDict
:
import collections
jsonpost = collections.OrderedDict(sorted(jsonpost.items()))
或者,您可以将“for循环”更改为:
for key in sorted(jsonpost.keys()):
for innerkey in jsonpost[key]:
print innerkey
Python字典本质上是无序的,所以当您打印它们时,键可能是无序的 如果订单很重要,您可以使用
OrderedDict
:
import collections
jsonpost = collections.OrderedDict(sorted(jsonpost.items()))
或者,您可以将“for循环”更改为:
for key in sorted(jsonpost.keys()):
for innerkey in jsonpost[key]:
print innerkey
字典排序被指定为未指定,您可以
排序(whatever.keys())
,或者如果您运行的是python 2.7或更高版本,则可以使用并排序字典,即集合.OrderedDict
。字典排序被指定为未指定,您可以排序(whatever.keys())
或者,如果您运行的是python 2.7或更高版本,则可以使用和排序字典,即集合。OrderedDict。字典在python中不排序。映射没有指定的顺序,只是键与值的关联。你需要它们按特定的顺序吗?字典通常没有保证的顺序。这是一个实现细节,因为它们不是为迭代而构建的。为此,我认为Python有一个名为“odict”的包。按照规范,JSON(无序的键/值对集)也是如此:Python中没有对字典进行排序。映射没有指定的顺序,只是键与值的关联。你需要它们按特定的顺序吗?字典通常没有保证的顺序。这是一个实现细节,因为它们不是为迭代而构建的。我认为Python有一个名为“odict”的包来实现这一目的?或者在脚本执行的生命周期内保持一致?从不?或者在脚本执行的整个生命周期内保持一致?是的,我需要按顺序获取密钥是的,我需要按顺序获取密钥