You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新JSON键值后写入文件时如何保留原有键的顺序?

问题原因

  1. 你在调用json.dump时设置了sort_keys=True,该参数的作用是强制将JSON的所有键按字母顺序升序排列,这是导致你输出顺序不符合预期的核心原因。
  2. 如果你使用的是Python 3.6及更早版本,Python原生的字典不保留插入顺序,也可能导致写入后的键顺序发生变化。

解决方案

步骤1:修改json.dump的参数

删掉sort_keys=True配置,或者显式设置为sort_keys=False,json.dump默认就不会强制对键排序,会保留字典的原始插入顺序。
修改后的写入代码如下:

import json
with open("example.json", "w", encoding='utf-8') as f:
    json.dump(value, f, ensure_ascii=False, indent=4)

步骤2:低版本Python兼容处理

如果你的运行环境是Python 3.6及更早版本,需要用collections.OrderedDict来存储字典对象,保证插入顺序:

  1. 读取原始JSON时就配置保留顺序:
from collections import OrderedDict
import json

with open("原始文件路径.json", "r", encoding='utf-8') as f:
    value = json.load(f, object_pairs_hook=OrderedDict)
  1. 新增art键时如果需要调整到指定位置,可以用move_to_end方法调整顺序:
# 假设kk是result数组下的每个OrderedDict对象
kk['art'] = pencil
# 把art键移动到allow的后一位
kk.move_to_end('art', last=False)
kk.move_to_end('allow', last=False)

做完以上两步就可以保证写入JSON后的键顺序和你预期的一致。

内容的提问来源于stack exchange,提问作者Angeline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:15:04