如何基于含目标键的数组修改字典指定键值,使'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
相关产品推荐
相关产品推荐

