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

如何遍历字典列表修改字典键并保持键的原有顺序?

修改字典键并保持顺序(单个for循环实现)

原始数据

my_dict_1 = {'a': 1, 'b': 2, 'c': 3}
my_dict_2 = {'a': 10, 'b': 20, 'c': 30}

original_list = [my_dict_1, my_dict_2]

需求

遍历original_list,将每个字典中的键'b'替换为'New',同时保持原有键的顺序,最终得到:

my_dict_1 = {'a': 1, 'New': 2, 'c': 3}
my_dict_2 = {'a': 10, 'New': 20, 'c': 30}

尝试的代码及问题

for i in [my_dict_1, my_dict_2]:
    i['NEW'] = i.pop('b')

print(my_dict_1)

输出结果:{'a': 1, 'c': 3, 'NEW': 2},新键'NEW'被放到了字典末尾,没有保持原位置顺序。

解决方案(单个for循环实现)

Python 3.7+的普通字典会保留插入顺序,但直接pop后添加新键会把新键追加到末尾。要保持原位置,需要按原字典的键顺序重新构建字典:

方法一:遍历键值对替换

for d in original_list:
    # 先保存原字典的键值对,避免修改过程中影响遍历
    original_items = list(d.items())
    d.clear()
    for k, v in original_items:
        # 替换目标键,其余保持原样
        d['New' if k == 'b' else k] = v

print(my_dict_1)  # {'a': 1, 'New': 2, 'c': 3}
print(my_dict_2)  # {'a': 10, 'New': 20, 'c': 30}

方法二:字典推导式简化

for d in original_list:
    # 用字典推导式生成新的键值对(保持原顺序)
    updated_dict = {'New' if k == 'b' else k: v for k, v in d.items()}
    d.clear()
    d.update(updated_dict)

print(my_dict_1)  # {'a': 1, 'New': 2, 'c': 3}

原理说明

直接pop('b')会移除该键,之后添加的'New'键会被视为新插入的键,因此被放到字典末尾。而通过按原字典的键顺序遍历并构建新字典,能保证'New'键处于原'b'键的位置,从而维持整体顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:43:24