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

如何按A、B、C、D固定顺序遍历JSON字典中的键值对?

解决字典遍历顺序混乱的问题

你的问题核心出在Python字典的遍历特性上:在Python 3.7之前,字典是无序的,d.items()返回的键值对顺序完全不固定;哪怕是3.7+版本的Python,虽然字典会保留插入顺序,但依赖这个特性不如显式指定遍历顺序稳妥——毕竟JSON数据的加载顺序可能受解析器影响,没法100%保证和源文件一致。

这里给你两个简单可靠的解决方案:

方案1:显式指定遍历的键顺序(推荐)

直接定义你需要的固定键顺序列表,然后循环这个列表取对应的值,完全不受字典自身顺序的影响:

import json

# 定义你要的固定顺序
key_order = ["A", "B", "C", "D"]

with open("mydata.json", "r") as read_file:
    md = json.load(read_file)

for d in md:
    for k in key_order:
        # 可选加判断,防止字典缺少某个键时报错
        if k in d:
            print(f"{k}: {d[k]}")

这种方式最直观,也兼容所有Python版本,不管字典内部顺序怎么变,都能严格按照A→B→C→D的顺序输出,比你原来一堆if-else的写法简洁太多。

方案2:使用有序字典(适配Python 3.7之前版本)

如果你的Python版本低于3.7,可以用collections.OrderedDict加载JSON,保证字典保留源文件中的顺序:

import json
from collections import OrderedDict

with open("mydata.json", "r") as read_file:
    # 用OrderedDict加载JSON,保留原始顺序
    md = json.load(read_file, object_pairs_hook=OrderedDict)

# 但还是推荐用方案1的显式顺序,避免依赖JSON源文件的顺序
key_order = ["A", "B", "C", "D"]
for d in md:
    for k in key_order:
        print(f"{k}: {d[k]}")

不过要注意,哪怕用了OrderedDict,如果JSON源文件的键顺序被修改,遍历顺序也会跟着变,所以方案1才是真正能保证固定顺序的最优解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:01:15