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

如何基于含目标键的数组修改字典指定键值,使'y'与'z'的值相等

实现嵌套字典指定子键的同步修改

需求回顾

给定嵌套字典、指定父键列表,需要将列表中每个父键对应的子字典里的z值修改为y的值(使两者相等),未指定的父键对应的子字典保持原样。

基础实现方案

最直接的方式就是遍历指定的父键列表,逐个修改对应子字典的键值:

# 原始数据
original_dict = {
    'A': {'x': '123', 'y': '322', 'z': '432'},
    'B': {'x': '24', 'y': '622', 'z': '5652'},
    'C': {'x': '424', 'y': '682', 'z': '52'},
    'D': {'x': '32', 'y': '96', 'z': '3'}
}
target_keys = ['A', 'B', 'D']

# 遍历目标父键,同步z和y的值
for parent_key in target_keys:
    # 健壮性判断:避免父键不存在引发错误
    if parent_key in original_dict:
        sub_dict = original_dict[parent_key]
        # 将z的值设置为y的值,实现两者相等
        sub_dict['z'] = sub_dict['y']

# 验证结果
print(original_dict)

运行后就能得到你想要的目标字典:

{
    'A': {'x': '123', 'y': '322', 'z': '322'},
    'B': {'x': '24', 'y': '622', 'z': '622'},
    'C': {'x': '424', 'y': '682', 'z': '52'},
    'D': {'x': '32', 'y': '96', 'z': '96'}
}

进阶:保留原始字典的方案

如果不想修改原字典,而是生成一个新的修改后的字典,可以使用深拷贝:

import copy

# 深拷贝原始字典,避免修改原数据
modified_dict = copy.deepcopy(original_dict)

for parent_key in target_keys:
    if parent_key in modified_dict:
        sub_dict = modified_dict[parent_key]
        sub_dict['z'] = sub_dict['y']

# 原字典不受影响,modified_dict是修改后的结果
print("原始字典:", original_dict)
print("修改后的字典:", modified_dict)

灵活调整同步方向

如果需求变成让y的值等于z的值,只需要修改赋值语句即可:

sub_dict['y'] = sub_dict['z']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:29:08