把字典放在一起

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

类似这样的伪 Python 应该不错:

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


ndic = dic0 + dic1
# ndic would equal {'dic0': 0, 'dic1': 1}
151191 次浏览

你要找的是 更新方法

dic0.update( dic1 )
print( dic0 )

给予

{'dic0': 0, 'dic1': 1}
dic0.update(dic1)

注意,这实际上并不返回组合字典,它只是变异了 dic0

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

最简单的方法是使用示例代码,但是使用每个字典的 item ()成员。所以密码是:

dic0 = {'dic0': 0}
dic1 = {'dic1': 1}
dic2 = dict(dic0.items() + dic1.items())

我在 IDLE 中测试了它,它工作得很好。 但是,前面关于这个主题的问题指出,这种方法速度很慢,占用了大量内存。还有其他几种推荐的方法,所以请注意内存使用是否重要。

如果您有兴趣在不使用中间存储的情况下创建一个新 dict: (这比使用 dict.items()更快,而且在我看来更干净)

dic2 = dict(dic0, **dic1)

或者,如果你乐意使用现有的一种说法:

dic0.update(dic1)

这里有一些添加字典的方法。

您可以使用 Python 3的字典解包特性。

ndic = {**dic0, **dic1}

或者通过添加这两个项目来创建一个新的 dict。

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

如果修改 dic0是可以的:

dic0.update(dic1)

如果修改 dic0没有,OK:

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

如果确保一个 dict 中的所有键都是字符串(在本例中为 dic1,当然可以交换参数)

ndic = dict(dic0, **dic1)

在某些情况下,使用 dict 理解(Python 2.7或更新版本) < br > 可能会很方便,特别是如果您希望同时过滤或转换某些键/值。

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