如何获取字典dict2相对dict1的新增内容并生成差异字典?
解决方法:找出字典副本中的新增内容
没问题,我来帮你搞定这个需求!既然dict2是dict1的副本,现在要找出dict2里新增(或修改)的内容并存到新字典里,其实分两种场景处理就好:
场景1:只找完全新增的键值对(dict1中没有的键)
如果你的需求是严格找出dict1里根本不存在的键,对应的值就是新增内容,用下面的代码就可以:
# 示例字典 dict1 = {"name": "Alice", "age": 25} dict2 = {"name": "Alice", "age": 25, "city": "New York", "job": "Engineer"} # 初始化存储差异的字典 added_content = {} # 遍历dict2的所有键值对 for key, value in dict2.items(): # 如果键不在dict1里,说明是新增的 if key not in dict1: added_content[key] = value print(added_content) # 输出: {'city': 'New York', 'job': 'Engineer'}
嫌代码长?用字典推导式一行就能搞定:
added_content = {k: v for k, v in dict2.items() if k not in dict1}
场景2:同时包含新增键和修改过的键值对
如果你还想把dict2中原有键但值被修改的内容也算进去(毕竟副本之后可能不仅新增,还改了值),可以稍微调整判断条件:
dict1 = {"name": "Alice", "age": 25} dict2 = {"name": "Alice Smith", "age": 25, "city": "New York"} added_or_modified = {} for key, value in dict2.items(): # 键不存在,或者键存在但值不同,都纳入差异 if key not in dict1 or dict1[key] != value: added_or_modified[key] = value print(added_or_modified) # 输出: {'name': 'Alice Smith', 'city': 'New York'}
对应的简洁版字典推导:
added_or_modified = {k: v for k, v in dict2.items() if k not in dict1 or dict1[k] != v}
这样就能根据你的实际需求,精准拿到dict2相对于dict1的差异内容啦!
内容的提问来源于stack exchange,提问作者Asad Ullah
相关产品推荐
相关产品推荐

