Python将新项添加到字典中

brs*_*gic 529 python dictionary items

我想在python中将项添加到现有字典中.例如,这是我的字典:

default_data = {
            'item1': 1,
            'item2': 2,
}
Run Code Online (Sandbox Code Playgroud)

我想添加新项目,以便:

default_data = default_data + {'item3':3}
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?

Chr*_*rle 1147

default_data['item3'] = 3
Run Code Online (Sandbox Code Playgroud)

很容易py.

另一种可能的方案

default_data.update({'item3': 3})
Run Code Online (Sandbox Code Playgroud)

如果你想一次插入多个项目,那就太好了.

  • @Warrick除个人品味外绝对没有区别.就个人而言,我发现第一个只是一个项目更直观. (5认同)
  • 抱歉,线程坏死了,但是添加一项时,有什么理由比另一种更喜欢一种方法吗? (2认同)
  • @user3067923 这纯粹是猜想,但我*想象*第一个会稍微快一点,因为它正在改变字典,而第二个必须创建一个临时字典,然后变异,然后垃圾收集临时字典。我需要对其进行基准测试才能明确地说。 (2认同)

Gre*_*att 72

它可以很简单:

default_data['item3'] = 3
Run Code Online (Sandbox Code Playgroud)

正如Chris的回答所说,您可以使用update来添加多个项目.一个例子:

default_data.update({'item4': 4, 'item5': 5})
Run Code Online (Sandbox Code Playgroud)

请将有关字典的文档视为数据结构字典作为内置类型.

  • 知道您可以在一个更新中执行多个项目很有用。 (2认同)

And*_*ark 23

我突然想到你可能实际上已经在询问如何+为字典实现运算符,以下似乎有效:

>>> class Dict(dict):
...     def __add__(self, other):
...         copy = self.copy()
...         copy.update(other)
...         return copy
...     def __radd__(self, other):
...         copy = other.copy()
...         copy.update(self)
...         return copy
... 
>>> default_data = Dict({'item1': 1, 'item2': 2})
>>> default_data + {'item3': 3}
{'item2': 2, 'item3': 3, 'item1': 1}
>>> {'test1': 1} + Dict(test2=2)
{'test1': 1, 'test2': 2}
Run Code Online (Sandbox Code Playgroud)

请注意,这比使用dict[key] = value或更多开销dict.update(),所以我建议不要使用此解决方案,除非您打算创建一个新的字典.

  • 如果你不想实现自己的运算符,你也可以做`dict(default_data.items()+ {'item3':3} .items())` (2认同)