Python add new item to dictionary
我想在已有的python字典中添加一个项目。例如,这是我的字典:
1 2 3 4
| default_data = {
'item1': 1,
'item2': 2,
} |
我想添加新项目,以便:
1
| default_data = default_data + {'item3':3} |
如何做到这一点?
- docs.python.org /教程/ datastructures.html #词典
- default_data['item3'] = 3不是选项?
- 问题:"机器yearning meta.stackexchange.com 5280 /拥抱/ /的非谷歌zwnj &;& # 8203;遥感
- 我很抱歉,我不知道的深度在这一政策的类型的物。谢谢你的信息的链接信息。
- "yearning:良好的机器一样。我评为关闭作为一个精确的复制。
- 拉尔森:"弗雷德的重复问题,但更好的答案!
- 嘿,我不能相信这样一个愚蠢的问题,多点增加了我的!请投票接近它……我对不起重复搜索到问题的BTW。计算器是第一社区,我使用它是一个错误这样问问题之前,在实际搜索。
- ingacio -在你的答案A"RTFM"后,自己去阅读手册。URL提供给不给你这个问题的答案。
- 我无法相信这是在线解决方案,但并没有张贴。我们可以使用它{ **default_data, 'item3':3}UPDATED返回数组。非常有用的理解和lambda函数的列表。(需要PEP 448(Python 3.5))
1
| default_data['item3'] = 3 |
像Py一样容易。
另一个可能的解决方案:
1
| default_data.update({'item3': 3}) |
如果您想一次插入多个项目,这很好。
- 这个回复比重复帖子更有用!+1改进一些简单的事情!
- 对不起,线程necro,但有什么理由在添加一个项目时,更喜欢一种方法而不是另一种方法?
- @沃里克,除了个人品味之外,没有什么不同。就我个人而言,我发现第一个对一个项目更直观一些。
- 哪个更快?
- @用户3067923这纯粹是一个猜测,但我认为第一个可能会更快一些,因为它改变了听写的位置,而第二个必须创建一个临时听写,然后突变,然后垃圾收集临时听写。我需要对它进行基准测试,以明确地说出来。
- @克丽丝贝尔,或者应该是O(1),或者至少非常接近它,对吗?
- 我正在寻找一种不使用lmbda的方法来修改字典,作为列表理解的一部分。这是我用过的。谢谢。
- 再加上一个让人晕眩的双关语
它可以简单到:
1
| default_data['item3'] = 3 |
正如克里斯的回答所说,您可以使用更新添加多个项目。一个例子:
1
| default_data.update({'item4': 4, 'item5': 5}) |
请将有关字典的文档作为数据结构查看,将字典作为内置类型查看。
我突然想到,您可能真的在问如何实现字典的+运算符,以下似乎有效:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| >>> 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} |
请注意,这比使用dict[key] = value或dict.update()的开销更大,因此我建议不要使用此解决方案,除非您无论如何都要创建一个新字典。
- 如果不想实现自己的运算符,也可以执行dict(default_data.items() + {'item3': 3}.items())。
- @pakman的评论在python3中不起作用(请参阅:stackoverflow.com/questions/13361510/…)