一起添加词典,Python

rec*_*gle 88 python dictionary append

我有两本词典,我希望能够成为一本词典:

像这样的伪Python会很好:

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

ndic = dic0 + dic1
# ndic would equal {'dic0': 0, 'dic1': 1}
Run Code Online (Sandbox Code Playgroud)

blu*_*ume 149

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

dic2 = dict(dic0, **dic1)
Run Code Online (Sandbox Code Playgroud)

或者,如果您乐意使用现有的dicts之一:

dic0.update(dic1)
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,但非直观.我希望'+'得到实施...... (5认同)
  • 如果键不是字符串,则第一行失败. (5认同)
  • 不太可靠:http://stackoverflow.com/a/2799082/1959808 (3认同)
  • @BerryTsakala 你用 python 3.9 实现了你的愿望:)但是运算符是“|”,而不是“+”。https://docs.python.org/3/whatsnew/3.9.html (3认同)
  • @BerryTsakala `+` 的问题是发生冲突时会发生什么?`.update()` 是不对称的。 (2认同)

Vij*_*jay 16

>>> dic0 = {'dic0':0}
>>> dic1 = {'dic1':1}
>>> ndic = dict(dic0.items() + dic1.items())
>>> ndic
{'dic0': 0, 'dic1': 1}
>>>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,Python 3.x中的等效语法是`ndic = list(dict(dic0.items())+ list(dic1.items()))`因为`.items()`不再返回列表,但是(可迭代的)视图 (2认同)
  • @BryceGuinta我假设你的意思是`ndic = dict(list(dic0.items())+ list(dic1.items())) (2认同)

use*_*019 12

您正在寻找更新方法

dic0.update( dic1 )
print( dic0 ) 
Run Code Online (Sandbox Code Playgroud)

{'dic0': 0, 'dic1': 1}
Run Code Online (Sandbox Code Playgroud)

  • 很好,虽然它修改了dic0.我不确定这张海报是否可以接受. (4认同)

ide*_*n42 11

以下是添加词典的几种方法.

您可以使用Python3的字典解包功能.

ndic = {**dic0, **dic1}
Run Code Online (Sandbox Code Playgroud)

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

ndic = dict(dic0.items() + dic1.items())
Run Code Online (Sandbox Code Playgroud)

如果你可以修改 dic0

dic0.update(dic1)
Run Code Online (Sandbox Code Playgroud)

如果您不能修改dic0

ndic = dic0.copy()
ndic.update(dic1)
Run Code Online (Sandbox Code Playgroud)

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

ndic = dict(dic0, **dic1)
Run Code Online (Sandbox Code Playgroud)

在某些情况下,使用dict理解(Python 2.7或更新版本)可能很方便,
特别是如果你想同时过滤掉或转换某些键/值.

ndic = {k: v for d in (dic0, dic1) for k, v in d.items()}
Run Code Online (Sandbox Code Playgroud)


Dan*_*man 5

dic0.update(dic1)
Run Code Online (Sandbox Code Playgroud)

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


小智 5

请在下次提问之前搜索网站:如何连接两个词典以在Python中创建一个新词典?

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

dic0 = {'dic0': 0}
dic1 = {'dic1': 1}
dic2 = dict(dic0.items() + dic1.items())
Run Code Online (Sandbox Code Playgroud)

我在IDLE测试了它,它工作正常.但是,关于此主题的上一个问题表明此方法很慢并且会占用内存.还有其他几种方法,所以请注意,如果内存使用很重要.

  • 仅供参考,这会创建一个元组列表,你需要运行`dict(dic0.items()+ dic1.items())` (3认同)