Python如何通过映射字典更新目标字典中列表类型的值
实现方案
首先给出初始定义的两个字典:
dict1 = {'key1': ['val1', 'val2', 'val3'], 'key2': ['val3', 'val4']} dict2 = {'val1': ['a', 'b'], 'val3': ['c', 'd']}
核心逻辑说明
我们只需要对dict1每个键对应的列表做元素展开替换即可:
- 遍历dict1的每一组键值对
- 对每个值列表里的元素逐个判断:如果该元素是dict2的键,就把dict2对应的值列表里的所有元素追加到结果里;如果不是,直接追加原元素
- 把处理好的新列表赋值给对应键即可
可直接运行的代码
基础循环写法(可读性更高)
result = {} for k, val_list in dict1.items(): new_list = [] for item in val_list: if item in dict2: new_list.extend(dict2[item]) else: new_list.append(item) result[k] = new_list # 若需要直接修改原dict1而非生成新字典,可直接赋值: # dict1 = result print(result)
简洁列表推导写法
result = { k: [ele for item in val_list for ele in (dict2[item] if item in dict2 else [item])] for k, val_list in dict1.items() } print(result)
输出结果验证
运行后得到的结果和需求完全一致:
{'key1': ['a', 'b', 'val2', 'c', 'd'], 'key2': ['c', 'd', 'val4']}
内容的提问来源于stack exchange,提问作者bltSandwich21
相关产品推荐
相关产品推荐

