如何向现有词典中添加关键字?它没有.add()方法。


当前回答

还有一个名字奇怪,行为怪异,但仍然很方便的dict.setdefault()。

This

value = my_dict.setdefault(key, default)

基本上就是这样:

try:
    value = my_dict[key]
except KeyError: # key not found
    value = my_dict[key] = default

例如。,

>>> mydict = {'a':1, 'b':2, 'c':3}
>>> mydict.setdefault('d', 4)
4 # returns new value at mydict['d']
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # a new key/value pair was indeed added
# but see what happens when trying it on an existing key...
>>> mydict.setdefault('a', 111)
1 # old value was returned
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # existing key was ignored

其他回答

要同时添加多个键,请使用dict.update():

>>> x = {1:2}
>>> print(x)
{1: 2}

>>> d = {3:4, 5:6, 7:8}
>>> x.update(d)
>>> print(x)
{1: 2, 3: 4, 5: 6, 7: 8}

对于添加单个密钥,接受的答案具有较少的计算开销。

通过为字典中的键指定值,可以在字典中创建新的键/值对

d = {'key': 'value'}
print(d)  # {'key': 'value'}

d['mynewkey'] = 'mynewvalue'

print(d)  # {'key': 'value', 'mynewkey': 'mynewvalue'}

如果键不存在,则添加该键并指向该值。如果它存在,它所指向的当前值将被覆盖。

还有一个名字奇怪,行为怪异,但仍然很方便的dict.setdefault()。

This

value = my_dict.setdefault(key, default)

基本上就是这样:

try:
    value = my_dict[key]
except KeyError: # key not found
    value = my_dict[key] = default

例如。,

>>> mydict = {'a':1, 'b':2, 'c':3}
>>> mydict.setdefault('d', 4)
4 # returns new value at mydict['d']
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # a new key/value pair was indeed added
# but see what happens when trying it on an existing key...
>>> mydict.setdefault('a', 111)
1 # old value was returned
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # existing key was ignored

如果您不是在连接两个字典,而是在字典中添加新的键值对,那么使用下标表示法似乎是最好的方法。

import timeit

timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary.update({"aaa": 123123, "asd": 233})')
>> 0.49582505226135254

timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary["aaa"] = 123123; dictionary["asd"] = 233;')
>> 0.20782899856567383

但是,如果您想添加数千个新的键值对,那么应该考虑使用update()方法。

这个问题已经得到了令人恶心的回答,但自从我议论获得了很大的牵引力,以下是答案:

添加新密钥而不更新现有字典

如果您在这里试图找出如何添加键并返回新字典(而不修改现有字典),可以使用以下技术来完成

Python>=3.5

new_dict = {**mydict, 'new_key': new_val}

Python<3.5

new_dict = dict(mydict, new_key=new_val)

注意,使用这种方法,您的密钥需要遵循Python中有效标识符名称的规则。