Если ключ не существует, он добавляется и указывает на это значение. Если он существует, текущее значение, на которое он указывает, перезаписывается.
Ответ 2
Мне хочется объединить информацию о словарях Python:
Создание пустого словаря
data = {} # OR data = dict()
Создание словаря с начальными значениями
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))}
Вставка / обновление одного значения
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)
Вставка / обновление нескольких значений
data.update({'c':3,'d':4}) # Updates 'c' and adds 'd'
Python 3.9+:
Оператор обновления|= теперь работает для словарей:
data |= {'c':3,'d':4}
Создание объединенного словаря без изменения оригиналов
data3 = {} data3.update(data) # Modifies data3, not data data3.update(data2) # Modifies data3, not data2
Python 3.5+:
При этом используется новая функция, называемая распаковкой словаря.
data = {**data1, **data2, **data3}
Python 3.9+:
Оператор слияния| теперь работает для словарей:
data = data1 | {'c':3,'d':4}
Удаление элементов в словаре
del data[key] # Removes specific element in a dictionary data.pop(key) # Removes the key & returns the value data.clear() # Clears entire dictionary
Проверьте, есть ли ключ уже в словаре
key in data
Перебор пар в словаре
for key in data: # Iterates just through the keys, ignoring the values for key, value in d.items(): # Iterates through the pairs for key in d.keys(): # Iterates just through key, ignoring the values for value in d.values(): # Iterates just through value, ignoring the keys
Создайте словарь из двух списков
data = dict(zip(list_with_keys, list_with_values))
Ответ 3
Чтобы добавить несколько ключей одновременно, используйте dict.update():
Мы также можем эффективно обновлять dict несколькими значениями, используя update метод. Возможно, мы без необходимости создаем дополнительный dict здесь, поэтому мы надеемся, что наш dict уже создан и взят из него или использовался для другой цели:
Другой эффективный способ сделать это с помощью метода update - использовать аргументы ключевых слов, но поскольку они должны быть правильными словами python, вы не можете использовать пробелы или специальные символы или начинать имя с цифры, но многие считают это более читаемым способом создания ключей для dict, и здесь мы, конечно, избегаем создания лишних ненужныхdict:
Итак, теперь мы рассмотрели три Pythonic способа обновления dict.
Волшебный метод, __setitem__ и почему его следует избегать
Есть другой способ обновления dict, который вам не следует использовать, который использует __setitem__ метод. Вот пример того, как можно использовать __setitem__ метод для добавления пары ключ-значение в dict , и демонстрация низкой производительности его использования:
>>> d = {} >>> d.__setitem__('foo', 'bar') >>> d {'foo': 'bar'}
>>> deff(): ... d = {} ... for i in xrange(100): ... d['foo'] = i ... >>> defg(): ... 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, то есть использование языка так, как он был задуман, обычно является более читабельным и эффективным с точки зрения вычислений.