Методы вставки пар ключ-значение в dict

Раздел: Основы Python -> Словари

Основные способы добавления элементов в словарь

Базовый способ - присваивание по ключу

Самый простой и производительный метод - прямая запись значения по новому или существующему ключу. Если ключ уже есть, значение заменяется.


d = {'a': 1, 'b': 2}
d['c'] = 3
print(d)

словарь слов python (словарь слов в python)

{'a': 1, 'b': 2, 'c': 3}

Python значение ключа словаря (значение ключа словаря в python)

Этот метод подходит для добавления одного элемента. Выполняется за O(1) в среднем, что делает его наиболее эффективным.

Как добавить несколько элементов одновременно?

Метод update() позволяет добавить пары ключ-значение из другого словаря или итерируемого объекта с парами.


d = {'x': 10}
d.update({'y': 20, 'z': 30})
print(d)

ключ значение в python (пары ключ-значение в python)

{'x': 10, 'y': 20, 'z': 30}

получить значение ключа python (получение значения ключа в python)

Также можно передавать именованные аргументы: d.update(y=20, z=30). При совпадении ключей значения перезаписываются.

Проблема:

Если передать в update() нехешируемые объекты (например, список), возникнет TypeError. При большом количестве элементов метод может быть медленнее прямых присваиваний из-за дополнительных накладных расходов.

Как добавить элемент только если ключа нет?

Метод setdefault(key, default) возвращает значение по ключу, если ключ существует, иначе вставляет ключ со значением default и возвращает его.


d = {'a': 1}
value = d.setdefault('b', 2)
print(d, value)

Python получить ключ (получение ключа словаря в python)

{'a': 1, 'b': 2} 2

словарь значения python (словарь значений в python)

Важно: setdefault всегда возвращает значение (существующее или вставленное). Удобен для инициализации вложенных структур, например, списков.

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

Можно использовать условную конструкцию:


d = {'key': 'old'}
if 'key' not in d:
    d['key'] = 'new'
print(d)

список значений словаря python (список значений словаря в python)

{'key': 'old'}

удаление словаря python (удаление элемента из словаря в python)

Альтернатива - метод setdefault с явным сравнением.

Распространенная ошибка:

Проверка if 'key' not in d выполняется за O(1), но требует отдельного шага. Для массового добавления с условием лучше подходит defaultdict.

Как объединить словари с добавлением новых ключей в Python 3.9+?

Оператор |= и | позволяют объединять словари. d1 |= d2 изменяет d1 на месте, добавляя все ключи из d2 (существующие перезаписываются).


d1 = {'a': 1}
d2 = {'b': 2, 'c': 3}
d1 |= d2
print(d1)

добавление в словарь python (добавление в словарь python)

{'a': 1, 'b': 2, 'c': 3}

Выражение d1 | d2 создает новый словарь, не изменяя исходные. Этот способ лаконичен и рекомендуется для версий 3.9+.

Типичные проблемы при добавлении элементов

  • Нехешируемые ключи. Ключами словаря могут быть только неизменяемые (хешируемые) объекты. Попытка использовать список, словарь или множество приводит к TypeError.
  • Перезапись существующего ключа. Если это нежелательно, нужно явно проверять наличие ключа.
  • Изменение словаря во время итерации. Добавление элементов в словарь при проходе по его ключам может вызвать RuntimeError или непредсказуемое поведение.
- Python элемент словаря по ключу (получение элемента словаря по ключу)
- Python dict в строку (преобразование словаря в строку в python)
- Python dict keys (метод dict.keys() в python)

Расширенные примеры добавления элементов

Добавление с использованием defaultdict для автоматической инициализации

Класс defaultdict из модуля collections создает словарь, в котором отсутствующий ключ автоматически получает значение, созданное фабричной функцией. Это удобно для накопления данных, например, списков.

Пример

from collections import defaultdict

d = defaultdict(list)
d['a'].append(1)
d['b'].append(2)
d['a'].append(3)
print(d)
defaultdict(<class 'list'>, {'a': [1, 3], 'b': [2]})

Добавление с помощью dict comprehension и нового ключа

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

Пример

base = {'x': 1, 'y': 2}
new_dict = {k: v for k, v in base.items()}
new_dict['z'] = 3
print(new_dict)
{'x': 1, 'y': 2, 'z': 3}

Добавление элемента с использованием оператора слияния (Python 3.9+)

Оператор | создает новый словарь, объединяя два исходных. Если ключи совпадают, значение берется из правого операнда. Это неизменяющий способ добавления.

Пример

old = {'a': 10}
new = old | {'b': 20, 'c': 30}
print(old, new)
{'a': 10} {'a': 10, 'b': 20, 'c': 30}

Добавление из списка кортежей с помощью update

Метод update принимает итерируемый объект, содержащий пары. Удобно, когда данные подготовлены в виде списка кортежей.

Пример

d = {}
pairs = [('alpha', 1), ('beta', 2)]
d.update(pairs)
print(d)
{'alpha': 1, 'beta': 2}

Добавление элемента во вложенный словарь с проверкой

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

Пример

data = {'config': {'timeout': 30}}
if 'debug' not in data['config']:
    data['config']['debug'] = True
print(data)
{'config': {'timeout': 30, 'debug': True}}

Добавление с помощью fromkeys и последующей модификацией

Статический метод dict.fromkeys создает словарь с заданными ключами и общим значением. Затем можно добавить новые ключи.

Пример

keys = ['id', 'name', 'value']
d = dict.fromkeys(keys, None)
d['extra'] = 'added'
print(d)
{'id': None, 'name': None, 'value': None, 'extra': 'added'}

Добавление элемента в словарь Python - comments

En
Python dict add (python)