Добавить новые ключи в словарь? - PullRequest
2292 голосов
/ 22 июня 2009

Можно ли добавить ключ в словарь Python после его создания? Кажется, у него нет метода .add().

Ответы [ 13 ]

12 голосов
/ 23 октября 2017

Так много ответов, и все еще все забыли о странном имени, странном поведении, и все же под рукой dict.setdefault()

Это

value = my_dict.setdefault(key, default)

в основном просто делает это:

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

1010 *, например *

>>> 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
3 голосов
/ 11 октября 2018

Если вы не объединяете два словаря, но добавляете новые пары ключ-значение в словарь, то использование записи нижнего индекса кажется наилучшим способом.

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().

0 голосов
/ 25 марта 2019

сначала проверьте, существует ли ключ

a={1:2,3:4}
a.get(1)
2
a.get(5)
None

тогда вы можете добавить новый ключ и значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...