Как вставить новый элемент в словарь Python: практические примеры
Основные способы добавления элементов в словарь
Прямое присваивание по ключу
d = {'a': 1}
d['b'] = 2
print(d)словарь слов python (словарь слов в python)
{'a': 1, 'b': 2}Python значение ключа словаря (значение ключа словаря в python)
Прямое присваивание d[key] = value – самый быстрый и эффективный способ. Оно добавляет новую пару, если ключ отсутствует, или перезаписывает значение существующего ключа. Операция выполняется за O(1) в среднем.
if 'b' not in d:
d['b'] = 2
ключ значение в python (пары ключ-значение в python)
Как добавить элемент, если ключ отсутствует, не перезаписывая существующий?
Метод setdefault возвращает текущее значение ключа или вставляет значение по умолчанию.
d = {'x': 10}
val = d.setdefault('x', 20)
print(d, val)
d.setdefault('y', 30)
print(d)получить значение ключа python (получение значения ключа в python)
{'x': 10} 10
{'x': 10, 'y': 30}Python получить ключ (получение ключа словаря в python)
Полезен для счётчиков и группировки, когда требуется инициализация при первом обращении.
default вычисляется всегда, даже если ключ уже существует. Для дорогостоящих операций лучше использовать if или defaultdict.Как добавить несколько элементов за один вызов?
Метод update принимает словарь, итератор пар или именованные аргументы.
d = {'a': 1}
d.update({'b': 2, 'c': 3})
print(d)
d.update(d=4, e=5)
print(d)словарь значения python (словарь значений в python)
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}список значений словаря python (список значений словаря в python)
Модифицирует исходный словарь. Если нужно создать новый без изменения старого, используйте оператор | или распаковку.
TypeError. update ожидает mapping или iterable пар.Как создать словарь из списка ключей с одинаковым значением по умолчанию?
Метод fromkeys создаёт новый словарь.
keys = ['key1', 'key2', 'key3']
d = dict.fromkeys(keys, 0)
print(d)удаление словаря python (удаление элемента из словаря в python)
{'key1': 0, 'key2': 0, 'key3': 0}добавление в словарь python (добавление в словарь python)
Удобен для быстрой инициализации. Если значением является мутабельный объект, все ключи будут ссылаться на один и тот же экземпляр.
defaultdict.Как объединить два словаря, создав новый, не изменяя исходные?
Оператор | (Python 3.9+) возвращает новый словарь.
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
d3 = d1 | d2
print(d3)Python dict add (добавление элемента в словарь python)
{'a': 1, 'b': 3, 'c': 4}Python найти в словаре (поиск ключа в словаре python)
При совпадении ключей приоритет у правого операнда. Для изменения исходного словаря используется |=.
{**d1, **d2}.Как добавить элемент с автоматическим созданием вложенных структур?
defaultdict из модуля collections создаёт значение по умолчанию при обращении к отсутствующему ключу.
from collections import defaultdict
dd = defaultdict(list)
dd['group'].append(1)
print(dd)Python элемент словаря по ключу (получение элемента словаря по ключу)
defaultdict(<class 'list'>, {'group': [1]})Python dict в строку (преобразование словаря в строку в python)
Избавляет от явных проверок, идеален для группировки и вложенных структур.
lambda или вложенные defaultdict. Любое обращение к отсутствующему ключу создаёт значение, что может быть нежелательно.Как добавить элемент при условии, если ключ отсутствует?
Проверка с помощью if key not in dict.
d = {'a': 1}
if 'b' not in d:
d['b'] = 2
print(d)Python dict keys (метод dict.keys() в python)
{'a': 1, 'b': 2}создать dict python (создание словаря в python)
Простой и понятный способ. Комбинируется с else для альтернативных действий.
setdefault или defaultdict.Как добавить элемент, создав новый словарь, не изменяя исходный?
Распаковка словаря с помощью {**d, key: value}.
d1 = {'a': 1}
d2 = {**d1, 'b': 2}
print(d1, d2)Python sort dict (сортировка словаря в python)
{'a': 1} {'a': 1, 'b': 2}Создаётся новый объект, исходный остаётся без изменений. При совпадении ключей приоритет у правых.
copy.deepcopy.Расширенные примеры добавления данных в словарь
Добавление из списка кортежей с преобразованием ключей
pairs = [('name', 'Alice'), ('age', 30), ('city', 'Moscow')]
d = {key.upper(): value for key, value in pairs}
print(d){'NAME': 'Alice', 'AGE': 30, 'CITY': 'Moscow'}Dict comprehension применяет функцию к ключам перед вставкой. Удобно при нормализации данных.
Группировка слов по первой букве с помощью setdefault
words = ['apple', 'apricot', 'banana', 'cherry']
groups = {}
for word in words:
key = word[0]
groups.setdefault(key, []).append(word)
print(groups){'a': ['apple', 'apricot'], 'b': ['banana'], 'c': ['cherry']}Каждый раз при отсутствии ключа создаётся пустой список, затем добавляется слово. Эффективнее проверки if key in groups.
Объединение словарей с пользовательской логикой разрешения конфликтов
d1 = {'x': 10, 'y': 5}
d2 = {'x': 7, 'z': 8}
merged = {**d1}
for k, v in d2.items():
merged[k] = max(merged.get(k, v), v)
print(merged){'x': 10, 'y': 5, 'z': 8}Исходные словари не изменены. При совпадении ключей выбирается максимальное значение – гибкая альтернатива стандартному перезаписыванию.
Создание вложенного словаря с помощью defaultdict
from collections import defaultdict
nested = defaultdict(lambda: defaultdict(int))
data = [('math', 'Alice', 85), ('math', 'Bob', 90), ('physics', 'Alice', 88)]
for subject, student, score in data:
nested[subject][student] = score
print(dict(nested)){'math': defaultdict(<class 'int'>, {'Alice': 85, 'Bob': 90}), 'physics': defaultdict(<class 'int'>, {'Alice': 88})}Вложенный defaultdict автоматически создаёт внутренний словарь при первом обращении. Позволяет избежать многоуровневых проверок.
Фильтрация при объединении с оператором |
d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'b': 4, 'd': 5}
d3 = {k: v for k, v in (d1 | d2).items() if v > 2}
print(d3){'b': 4, 'c': 3, 'd': 5}Сначала создаётся объединённый словарь, затем фильтруются пары по условию. Подходит для цепочек преобразований.
Добавление с проверкой типа ключа
d = {}
key = 123
if isinstance(key, (str, int, tuple)):
d[key] = 'valid'
else:
print('Ключ должен быть хешируемым')
print(d){123: 'valid'}Гарантирует, что ключ является хешируемым типом, предотвращая TypeError. Полезно при динамическом формировании ключей.