Как добавить элемент в словарь в Python: полное руководство

Раздел: Структуры данных -> Словари

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

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

my_dict = {'a': 1, 'b': 2}
my_dict['c'] = 3  # добавляется пара 'c': 3
print(my_dict)    # {'a': 1, 'b': 2, 'c': 3}

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

Присваивание по новому ключу создаёт элемент в словаре. Если ключ уже существует, значение будет перезаписано.

Типичная ситуация: случайная перезапись существующего ключа. Перед добавлением можно проверять наличие ключа оператором in, но это замедляет код. Метод setdefault() решает задачу безопаснее.

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

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

d2 = {'a': 1, 'b': 2}
d2.update([('c', 3), ('d', 4)])
print(d2)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

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

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

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

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

grades = {'Иван': 85}
grades.setdefault('Мария', 90)
grades.setdefault('Иван', 100)  # Иван уже есть, значение не изменится
print(grades)  # {'Иван': 85, 'Мария': 90}

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

setdefault(key, default) возвращает значение по ключу, если оно существует. Если ключа нет, вставляет default и возвращает его. Отлично подходит для инициализации вложенных структур, когда нужно добавить элемент только при первом обращении.

Ошибка: передача изменяемого объекта в качестве default (например, пустого списка) приводит к тому, что этот список будет общим для всех вызовов, если его потом изменять. setdefault не создаёт копию.

Как автоматически создавать значение по умолчанию при первом обращении к ключу?

from collections import defaultdict

dd = defaultdict(int)
dd['a'] += 1  # сначала создаётся 0, потом прибавляется 1
print(dd)     # defaultdict(<class 'int'>, {'a': 1})

dd2 = defaultdict(list)
dd2['fruits'].append('яблоко')
print(dd2)    # defaultdict(<class 'list'>, {'fruits': ['яблоко']})

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

Объект defaultdict принимает фабрику (функцию без аргументов), которая возвращает значение по умолчанию для отсутствующего ключа. Это удобно для группировки данных, подсчёта частоты и т.д.

Фабрика не может принимать аргументы. Если нужна разная логика при создании, используйте __missing__ или обычный словарь с setdefault. Также defaultdict не выбрасывает KeyError при обращении к несуществующему ключу – это может маскировать ошибки.

Как объединить словари с помощью операторов | и |= (Python 3.9+)?

base = {'one': 1, 'two': 2}
extra = {'three': 3, 'one': 100}

merged = base | extra  # создаётся новый словарь
print(merged)          # {'one': 100, 'two': 2, 'three': 3}

base |= {'four': 4}    # обновление на месте
print(base)            # {'one': 1, 'two': 2, 'four': 4}

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

Работает только начиная с Python 3.9. Для более старых версий используйте update() или {**d1, **d2}. Передача несовместимых типов (например, числа) вызовет TypeError.

- список значений словаря python (список значений словаря в python)
- удаление словаря python (удаление элемента из словаря в python)
- добавление в словарь python (добавление в словарь python)

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

Вложенные словари и безопасное добавление

Пример
data = {}
# Добавление элемента во вложенный словарь
if 'user' not in data:
    data['user'] = {}
data['user']['name'] = 'Анна'

# Упрощаем с помощью defaultdict
from collections import defaultdict
data = defaultdict(dict)
data['user']['name'] = 'Анна'  # автоматически создаётся пустой dict
print(data['user'])  # {'name': 'Анна'}
{'name': 'Анна'}

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

Пример
pairs = [('a', 1), ('b', 2), ('a', 3)]
result = {}
for key, val in pairs:
    result.setdefault(key, []).append(val)
print(result)  # {'a': [1, 3], 'b': [2]}
{'a': [1, 3], 'b': [2]}

Массовое добавление с проверкой уникальности ключей

Пример
keys = ['x', 'y', 'z']
values = [10, 20, 30]
new_dict = {}
for k, v in zip(keys, values):
    if k in new_dict:
        raise ValueError(f"Повторяющийся ключ {k}")
    new_dict[k] = v
print(new_dict)  # {'x': 10, 'y': 20, 'z': 30}
{'x': 10, 'y': 20, 'z': 30}

Использование dict.fromkeys для инициализации

Пример
# Создаём словарь с ключами из списка и одинаковым значением
keys = ['a', 'b', 'c']
result = dict.fromkeys(keys, 0)
print(result)  # {'a': 0, 'b': 0, 'c': 0}

# Внимание: если значение изменяемое (например, []), все ключи укажут на один объект
wrong = dict.fromkeys(keys, [])
wrong['a'].append(1)
print(wrong)  # {'a': [1], 'b': [1], 'c': [1]} - неожиданное поведение
{'a': 0, 'b': 0, 'c': 0}
{'a': [1], 'b': [1], 'c': [1]}

Объединение словарей с пользовательской логикой (collections.ChainMap)

Пример
from collections import ChainMap

base = {'color': 'red', 'size': 'M'}
extra = {'color': 'blue', 'price': 100}

# ChainMap не добавляет элементы, а создаёт цепочку поиска
cm = ChainMap(base, extra)
# При обращении к ключу ищет слева направо
print(cm['color'])  # 'red' (из первого словаря)

# Чтобы реально добавить, придётся изменить один из словарей
base['material'] = 'cotton'
print(cm['material'])  # 'cotton'
red
cotton

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

En
Python добавить в словарь (python)