如何按指定的键值对顺序遍历JSON创建的字典?

时间:2018-09-21 18:56:21

标签: python json dictionary

我有一个类似于以下内容的JSON(此示例仅是一个玩具示例,用于说明要点,默认情况下,运气可以实现默认迭代)。

{ "A": 1, "B": 2, "C": 3 }

我可以将此JSON加载到Python(v2.7)字典中。

with open('/path/to/json/file') as f:
     json_data = json.load(f)

然后我按如下所示遍历键值对。

for k, v in json_data.iteritems():
     print('{}, {}'.format(k, v))

打印内容如下。

A, 1
C, 3
B, 2

我想要的是能够按照JSON中指定的顺序遍历项目。所以,我的预期输出应该是。

A, 1
B, 2
C, 3

是否有任何方法可以将JSON中的键/值对读入并存储到Python字典中,以便当我对其进行迭代时,可以保留JSON指定的顺序并以这种顺序回读?

我无法控制JSON的生产者将数据存储在数组中(对于Java,讨论的是here)。我想知道是否有LinkedHashMap像Python中的Java一样,也许我可以和json.load一起使用来保留读取的插入顺序。

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

您可以获取json加载器来构建OrderedDict:

import json
import collections

with open('example.json') as f:
    json_object = json.load(f,object_pairs_hook=collections.OrderedDict)