词典合并,Python

Adding dictionaries together, Python

本问题已经有最佳答案,请猛点这里访问。

我有两本词典,希望能编一本:

像这样的伪python很不错:

1
2
3
4
5
dic0 = {'dic0': 0}
dic1 = {'dic1': 1}

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


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

1
dic2 = dict(dic0, **dic1)

或者如果你愿意使用现有的听写:

1
dic0.update(dic1)


1
2
3
4
5
6
>>> dic0 = {'dic0':0}
>>> dic1 = {'dic1':1}
>>> ndic = dict(dic0.items() + dic1.items())
>>> ndic
{'dic0': 0, 'dic1': 1}
>>>


这里有很多添加字典的方法。

您可以使用python3的字典解包功能。

1
ndic = {**dic0, **dic1}

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

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

如果您同意修改dic0

1
dic0.update(dic1)

如果你不能修改dic0

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

如果一个dict中的所有键都是字符串(在这种情况下,dic1,当然可以交换args)

1
ndic = dict(dic0, **dic1)

在某些情况下,使用dict理解(python 2.7或更高版本)可能很方便,特别是当您希望同时过滤或转换某些键/值时。

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


您正在寻找更新方法

1
2
dic0.update( dic1 )
print( dic0 )

给予

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


下次提问前请先搜索该站点:如何连接两个字典以在python中创建一个新字典?

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

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

我在空闲时测试过这个,它工作得很好。然而,前面关于这个主题的问题指出,这个方法很慢,而且会消耗内存。这里还推荐了其他几种方法,因此请注意,如果内存使用很重要。


1
dic0.update(dic1)

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