在python中迭代JSON对象

2024-04-18 22:40:29 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的JSON代码存储在jso变量中。

jso = {
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }

每当我试图获取数据或在JSON Object上迭代时,它都会以相反的顺序打印数据,即首先打印object,然后打印其他参数。

例如,我执行:

>>> for k,v in jso.iteritems():
...     print v
... 

我得到的结果是:

输出获取

{'GlossList': {'GlossEntry': {'Abbrev': 'ISO 8879:1986', 'GlossDef': {'GlossSeeAlso': ['GML', 'XML']}, 'GlossSee': 'markup'}}, 'title': 'S'}

可以看出,尽管'title':'S'是在'GlossList' Object之前写入的,但数据的打印顺序却是相反的。我是说应该有:

预期输出

{ 'title': 'S', 'GlossList': {'GlossEntry': {'Abbrev': 'ISO 8879:1986', 'GlossDef': {'GlossSeeAlso': ['GML', 'XML']}, 'GlossSee': 'markup'}}}

Tags: jsonobject顺序titleisoxmlmarkupjso
1条回答
网友
1楼 · 发布于 2024-04-18 22:40:29

python中的Dictionaries是无序集合:

It is best to think of a dictionary as an unordered set of key: value pairs, with the requirement that the keys are unique (within one dictionary).

但是,如果已经从字符串加载了json,那么可以直接将其加载到OrderedDict,请参见:

相关问题 更多 >