python - 使用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"}]}
我的输入顺序与输出顺序不同。是什么原因,我该如何纠正?
解决方案
你用的是什么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?没关系,与你的问题无关,但我很好奇。
推荐阅读
- android - Android 11 下载文件到下载文件夹不起作用
- palantir-foundry - 如何保存 Foundry Scenario 并在另一个 Workshop 模块中使用它?
- r - 使用 R 列表作为字典来替换字符串
- sql - 使用嵌套和连接编写查询的 SQL 新手
- arm - Keil/STM32:如何读取 C 程序中的启动(汇编)符号?
- bash - 试图在 bash 脚本 linux 中创建一个 tar 存档
- r - 如何结合 summarise_at 和需要从 R 中的多个列输入的自定义函数?
- mysql - 基于两个不同参数的MYSQL连接
- javascript - 无法模拟来自挂起组件的请求
- r - 错误:必须使用有效的下标向量重命名列