Добавить новые ключи в словарь?
Можно ли добавить ключ в словарь Python после его создания? Кажется, у него .add()
метода .add()
.
- Сопоставьте два списка в словаре в Python
- Словарь добавления Python, TypeError: unhashable type?
- Найти макс в вложенном словаре
- Python dump dict для json-файла
- Python: поиск ключей с уникальными значениями в словаре?
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?