Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么json.keys()以不同的顺序获取键_Python_Json - Fatal编程技术网

Python 为什么json.keys()以不同的顺序获取键

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 我的问题

您好,我有以下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

字典中的键永远不会以相同的顺序排列,如果希望代码中的键始终以相同的顺序排列,可以这样做

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”的包来实现这一目的?或者在脚本执行的生命周期内保持一致?从不?或者在脚本执行的整个生命周期内保持一致?是的,我需要按顺序获取密钥是的,我需要按顺序获取密钥