首页 > 解决方案 > 使用python将数据附加到JSON文件

问题描述

我编写了以下 python 代码来填充 JSON 文件。

import json

data = {}  
data['people'] = []

for i in range(0,3):
    data['people'].append({
    'name': 'C%d'%(i),
    'div':i,
    'from': 'City%d'%(i)
})

with open('data.txt', 'w') as outfile:  
    json.dump(data, outfile)

但是,我的 JSON 文件看起来像这样:

{"people": [{"div":0,"from":,"City0":"name":"C0"},{"div":0,"from":,"City0":"name":"C0"}]}

我的输入顺序与输出顺序不同。是什么原因,我该如何纠正?

标签: pythonjsonpython-3.x

解决方案


你用的是什么python版本?您创建了一个字典,但在 python 3.6 之前,插入顺序没有被保留。在 python 3.6中,插入顺序被保留,但它被认为是实现细节,不应依赖。在 python 3.7中,dict 对象的插入顺序保存特性已被声明为 Python 语言规范的官方部分。如果您使用低于 3.7 的 python 版本,请使用集合中的 OrderedDict。

import json
from collections import OrderedDict

data = {}
data['people'] = []
for i in range(0,3):
    data['people'].append(OrderedDict((
    ('name', 'C%d' %(i)),
    ('div', i),
    ('from', 'City%d'%(i))
    )))

with open('data.json', 'w') as outfile:  
    json.dump(data, outfile)

顺便问一下,为什么文件的扩展名是txt而不是json?没关系,与你的问题无关,但我很好奇。


推荐阅读