Добавить новые ключи в словарь?

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

15 Solutions collect form web for “Добавить новые ключи в словарь?”

 >>> d = {'key':'value'} >>> print(d) {'key': 'value'} >>> d['mynewkey'] = 'mynewvalue' >>> print(d) {'mynewkey': 'mynewvalue', 'key': 'value'} 
 >>> x = {1:2} >>> print x {1: 2} >>> x.update({3:4}) >>> print x {1: 2, 3: 4} 

Мне нравится консолидировать информацию о словарях Python:

 ### Creating an empty dictionary ### data = {} # OR data = dict() ### Creating a dictionary with initial values ### data = {'a':1,'b':2,'c':3} # OR data = dict(a=1, b=2, c=3) # OR data = {k: v for k, v in (('a', 1),('b',2),('c',3))} ### Inserting/Updating a single value ### data['a']=1 # Updates if 'a' exists, else adds 'a' # OR data.update({'a':1}) # OR data.update(dict(a=1)) # OR data.update(a=1) ### Inserting/Updating multiple values ### data.update({'c':3,'d':4}) # Updates 'c' and adds 'd' ### Creating a merged dictionary without modifying originals data3 = {} data3.update(data) # Modifies data3, not data data3.update(data2) # Modifies data3, not data2 ### Deleting items in dictionary ### del data[key] # Removes specific element in a dictionary data.pop(key) # Removes the key & returns the value data.clear() # Clears entire dictionary ### Check if a key is already in dictionary key in data ### Iterate through pairs in a dictionary for key in data: # Iterates just through the keys, ignoring the values for key, value in d.items(): # Iterates through the pairs 

Не стесняйтесь добавлять больше!

Да, это довольно легко. Просто выполните следующие действия:

 dict["key"] = "value" 

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

Да, возможно, и у него есть метод, который реализует это, но вы не хотите использовать его напрямую.

Чтобы продемонстрировать, как и как не использовать его, давайте создадим пустой dict с dict-литералом dict {} :

 my_dict = {} 

Лучшая практика 1: Обозначение подстроки

Чтобы обновить этот dict с помощью одного нового ключа и значения, вы можете использовать нотацию индекса (см. Здесь Mappings), которая предусматривает назначение элемента:

 my_dict['new key'] = 'new value' 

my_dict теперь:

 {'new key': 'new value'} 

Лучшая практика 2: метод update – 2 способа

Мы также можем также обновить dict с помощью нескольких значений, используя метод update . Возможно, нам излишне создать дополнительный dict , поэтому мы надеемся, что наш dict уже создан и получен из другой или используется для других целей:

 my_dict.update({'key 2': 'value 2', 'key 3': 'value 3'}) 

my_dict теперь:

 {'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value'} 

Еще один эффективный способ сделать это с помощью метода обновления – это аргументы ключевого слова, но поскольку они должны быть законными словами python, вы не можете иметь пробелы или специальные символы или начинать имя с номера, но многие считают это более читаемым способом для создания ключей для dict, и здесь мы, конечно, избегаем создания лишнего ненужного dict :

 my_dict.update(foo='bar', foo2='baz') 

и my_dict теперь:

 {'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value', 'foo': 'bar', 'foo2': 'baz'} 

Итак, теперь мы рассмотрели три путинских способа обновления dict .


Волшебный метод, __setitem__ , и почему его следует избегать

Существует еще один способ обновления dict который вы не должны использовать, который использует метод __setitem__ . Вот пример того, как можно использовать метод __setitem__ для добавления пары ключ-значение в dict и демонстрацию плохой производительности ее использования:

 >>> d = {} >>> d.__setitem__('foo', 'bar') >>> d {'foo': 'bar'} >>> def f(): ... d = {} ... for i in xrange(100): ... d['foo'] = i ... >>> def g(): ... d = {} ... for i in xrange(100): ... d.__setitem__('foo', i) ... >>> import timeit >>> number = 100 >>> min(timeit.repeat(f, number=number)) 0.0020880699157714844 >>> min(timeit.repeat(g, number=number)) 0.005071878433227539 

Таким образом, мы видим, что использование нотной записи на самом деле намного быстрее, чем использование __setitem__ . Выполнение Pythonic, то есть использование языка в том виде, в котором оно предназначалось для использования, обычно является более читабельным и эффективным с точки зрения вычислений.

 dictionary[key] = value 

Если вы хотите добавить словарь в словарь, вы можете сделать это таким образом.

Пример: добавьте новую запись в словарь и дополнительный словарь

 dictionary = {} dictionary["new key"] = "some new entry" # add new dictionary entry dictionary["dictionary_within_a_dictionary"] = {} # this is required by python dictionary["dictionary_within_a_dictionary"]["sub_dict"] = {"other" : "dictionary"} print (dictionary) 

Вывод:

 {'new key': 'some value entry', 'dictionary_within_a_dictionary': {'sub_dict': {'other': 'dictionarly'}}} 

ПРИМЕЧАНИЕ. Python требует, чтобы вы сначала добавили sub

 dictionary["dictionary_within_a_dictionary"] = {} 

перед добавлением записей.

Ортодоксальный синтаксис – это d[key] = value , но если на клавиатуре отсутствуют клавиши квадратной скобки, которые вы могли бы сделать:

 d.__setitem__(key, value) 

Фактически, определение __getitem__ и __setitem__ – это то, как вы можете сделать свой собственный класс поддержкой синтаксиса с квадратной скобкой. См. http://www.diveintopython.net/object_oriented_framework/special_class_methods.html.

вы можете создать

 class myDict(dict): def __init__(self): self = dict() def add(self, key, value): self[key] = value ## example myd = myDict() myd.add('apples',6) myd.add('bananas',3) print(myd) 

дает

 >>> {'apples': 6, 'bananas': 3} 

В этом популярном вопросе рассматриваются функциональные методы слияния словарей a и b .

Вот некоторые из более простых методов (проверенных на Python 3) …

 c = dict( a, **b ) ## see also https://stackoverflow.com/q/2255878 c = dict( list(a.items()) + list(b.items()) ) c = dict( i for d in [a,b] for i in d.items() ) 

Примечание. Первый вышеописанный метод работает только в том случае, если ключи в b являются строками.

Чтобы добавить или изменить один элемент , словарь b будет содержать только один элемент …

 c = dict( a, **{'d':'dog'} ) ## returns a dictionary based on 'a' 

Это эквивалентно …

 def functional_dict_add( dictionary, key, value ): temp = dictionary.copy() temp[key] = value return temp c = functional_dict_add( a, 'd', 'dog' ) 
 data = {} data['a'] = 'A' data['b'] = 'B' for key, value in data.iteritems(): print "%s-%s" % (key, value) 

приводит к

 aA bB 

Именно так я бы это сделал: # фиксированные данные с sapce

 data = {} data['f'] = 'F' data['c'] = 'C' for key, value in data.iteritems(): print "%s-%s" % (key, value) 

Это работает для меня. Наслаждайтесь!

мы можем добавить новые ключи в словарь таким образом:

Dictionary_Name [New_Key_Name] = New_Key_Value

Вот пример:

 # This is my dictionary my_dict = {'Key1': 'Value1', 'Key2': 'Value2'} # Now add new key in my dictionary my_dict['key3'] = 'Value3' # Print updated dictionary print my_dict 

Вывод:

 {'key3': 'Value3', 'Key2': 'Value2', 'Key1': 'Value1'} 

Он имеет метод обновления, который вы можете использовать следующим образом:

dict.update({"key" : "value"})

В основном два простых способа, с помощью которых вы можете добавить новый ключ в dict

 dict_input = {'one': 1, 'two': 2, 'three': 3} 1. dict_input['four'] = 4 2. dict_input.update({'five': 5}) 
  • Проверьте шаблон ключа в словаре в python
  • В python есть что-то вроде обновленного, чтобы обновить сортировку?
  • сортировка списка вложенных словарей в python
  • Как отфильтровать нестрочные ключи в словаре в Python?
  • Подсчет частоты каждой буквы в строке
  • iter, values, item в словаре не работает
  • Лучший способ побить многие элементы из питона
  • Python - Список уникальных словарей
  •  
    Interesting Posts for Van-Lav

    Включить методы list_route в корне API API Django REST

    изменить значение формы администратора admin

    Показать значение по умолчанию для редактирования на входе Python возможно?

    Как я могу объединить два списка и отсортировать их в «линейном» времени?

    Разбор Python HTML POST-данных из BaseHTTPServer

    Как подсчитать значения в словаре и распечатать ключ и значение, связанные с максимальной суммой

    Добавление нового столбца в кадр данных после вычисления во времени

    Pythonic способ определить, являются ли не нулевые записи списка «непрерывными»,

    Нужна консультация, чтобы добавить экспериментальную логику отсрочки в AWS API в python

    добавить капли или деревья в созданный репозиторий, используя pygit2 (libgit2)?

    Более статический путь в локальном экземпляре Flask

    В Django, как получить django-хранилища, boto и easy_thumbnail, чтобы работать хорошо?

    Ошибка «Нет отображаемого имени» при запуске бездействия в cygwin

    Ошибка декодирования Unicode Python при импорте matplotlib

    Baffling AttributeError в python с простым SQL-запросом

    Python - лучший язык программирования в мире.