将一个字典合并进另一个相同结构但包含None值的字典

0 投票
2 回答
46 浏览
提问于 2025-04-14 16:11

假设我有两个字典,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)

撰写回答