【问题标题】:Python JSON input order [duplicate]Python JSON输入顺序[重复]
【发布时间】:2015-03-04 00:56:22
【问题描述】:

我正在尝试读取一个 JSON 文件,其中包含我想要保持有序的数据,因为它是一个无法更改的数学方程式。我试过使用 OrderedDict() 但这不起作用(或者我无法让它工作)。

这是我正在使用的代码:

import json
from collections import OrderedDict

json_data = open('example3.json')
data = OrderedDict(json.load(json_data))

print (json.dumps(data))

谁能阐明为什么这不起作用?

亲切的问候 克雷格

【问题讨论】:

  • 请注意,json 规范明确提到 json 对象(在 Python 中转换为 dicts)是“键:值对的 无序 集合” - IOW ,您应该依赖于 json 中的键顺序。

标签: python json ordereddictionary


【解决方案1】:

json.load 会将 json 数据加载到字典中。然后将此字典转换为OrderedDict。不幸的是,因为它是一个字典first,所以在OrderedDict 中“设置”之前,顺序可能已经改变了。

要将 json 直接加载到 OrderedDict 中,您可以使用关键字参数 object_pairs_hookOrderedDict。详情请见the documentation

import json
from collections import OrderedDict

json_data = open('example3.json')
data = json.load(json_data, object_pairs_hook=OrderedDict)

【讨论】:

    猜你喜欢
    • 2017-01-17
    • 2013-08-08
    • 2017-05-04
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多