⚠️ Типичные ошибки

⚡ Кратко: ошибки

fromkeys(), get(), setdefault(), keys(), values() и items() повторяются как базовый набор методов словаря.

View objects отражают изменения словаря, а list(view) создаёт снимок.

Вложенные структуры требуют цепочки ключей и индексов.

copy() копирует только внешний словарь, deepcopy() копирует вложенные объекты.

Dict comprehension подходит для преобразования и фильтрации словаря.

Функции повторяются через def, pass, return, *args/**kwargs и LEGB.

Практическая задача со скобками решается стеком и словарём соответствий.

global работает, но параметры и return обычно дают более предсказуемый код.

Топ-3 ошибки: менять словарь во время итерации по items(); ожидать независимых списков от dict.fromkeys(keys, []); путать локальную переменную и global.

RuntimeError при изменении словаря

Удаление ключей во время for key, value in data.items() меняет размер словаря.

Итерируйтесь по list(data) или создавайте новый словарь.

data = {"name": "Alice", "age": 30}
for key in list(data):
    del data[key]
print(data)

Общая ссылка в fromkeys

Один список разделяется всеми ключами.

Используйте comprehension для независимых списков.

keys = ["a", "b"]
result = {key: [] for key in keys}
result["a"].append(1)
print(result)

Непонимание области видимости

Присваивание внутри функции создаёт локальную переменную.

Передавайте значения явно и возвращайте новый результат.

def increment(counter):
    return counter + 1

counter = 0
counter = increment(counter)
print(counter)