字典合并

138 投票
6 回答
169364 浏览
提问于 2025-04-16 17:38

我有两个字典,我想把它们合并成一个:

像下面这个伪代码的Python示例就很好:

dic0 = {'dic0': 0}
dic1 = {'dic1': 1}

ndic = dic0 + dic1
# ndic would equal {'dic0': 0, 'dic1': 1}

6 个回答

19

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,我们可能希望在用户输入错误时,程序能够给出提示,或者在某个数据没有加载完成时,程序能够等待一下再继续执行。这种情况就需要用到“条件语句”。

条件语句就像是一个判断的工具,它可以根据不同的情况来决定程序接下来要做什么。比如,如果用户输入的密码不正确,程序就可以显示“密码错误,请重试”。如果数据还没有准备好,程序就可以先暂停,等数据准备好了再继续。

简单来说,条件语句帮助程序根据不同的情况做出不同的反应,让程序更加智能和灵活。

>>> dic0 = {'dic0':0}
>>> dic1 = {'dic1':1}
>>> ndic = dict(list(dic0.items()) + list(dic1.items()))
>>> ndic
{'dic0': 0, 'dic1': 1}
>>>
50

这里有很多方法可以合并字典。

你可以使用Python3的字典解包功能:

ndic = {**dic0, **dic1}

需要注意的是,如果有重复的键,后面的值会覆盖前面的值。这种情况在这里列出的其他例子中也是一样的。


或者你可以通过添加两个项目来创建一个新的字典。

ndic = dict(tuple(dic0.items()) + tuple(dic1.items()))

如果可以修改 dic0

dic0.update(dic1)

如果不可以修改 dic0

ndic = dic0.copy()
ndic.update(dic1)

如果一个字典中的所有键都确保是字符串(这里是 dic1,当然参数可以互换)

ndic = dict(dic0, **dic1)

在某些情况下,使用字典推导式(Python 2.7或更新版本)可能会很方便,
特别是当你想同时过滤或转换一些键/值的时候。

ndic = {k: v for d in (dic0, dic1) for k, v in d.items()}
210

如果你想创建一个新的字典,而不想使用中间存储的方法:这样做更快,而且在我看来,比使用 dict.items() 更简洁。

dic2 = dict(dic0, **dic1)

或者,如果你愿意使用已有的字典:

dic0.update(dic1)

撰写回答