将一个字典合并进另一个相同结构但包含None值的字典
假设我有两个字典,dict1 = {"a": 0.0, "b": None}
和 dict2 = {"a": None, "b": 2.2}
。我想把 dict1
的内容合并到 dict2
中,但只有在 dict1
的值不是 None
的时候,才替换 dict2
中对应的值。
我想要的结果是:{"a": 0.0, "b": 2.2}
。
再比如,如果 dict1 = {"a": 0.0, "b": 5.5}
和 dict2 = {"a": None, "b": 2.2}
,那么我想要的结果是:{"a": 0.0, "b": 5.5}
。
2 个回答
0
我们可以用 dict.update
和字典推导来实现这个功能:
dict1 = {"a": 0.0, "b": None}
dict2 = {"a": None, "b": 2.2}
result = {}
for d in [dict2, dict1]:
result.update({k: v for k, v in d.items() if v is not None})
print(result)
输出结果:
{'b': 2.2, 'a': 0.0}
- 字典推导会选择那些值不是
None
的项目。 - 这种方法可以处理多个字典。
0
这段话的意思是,从dict1
中不会把值为None
的项目添加到其他地方,但从dict2
中不会删除那些值为None
的项目,只要这些项目没有被dict1
更新过。
dict1 = {"a": 0.0, "b": None}
dict2 = {"a": None, "b": 2.2}
# use a dictionary comprehension to skip any elements of dict1 that are None
dict2.update({ k:v for k,v in dict1.items() if not v is None })
# or
dict2 |= { k:v for k,v in dict1.items() if not v is None}
# refrain from adding items from dict1 that aren't already in dict2
dict2 |= { k:v for k,v in dict1.items() if not v is None and k in dict2}
print(dict2)