Dict comprehension создаёт словарь в одну читаемую конструкцию.
Топ-3 ошибки: использовать dict.fromkeys(keys, []) для независимых списков; ожидать, что list(dictionary.keys()) будет обновляться вместе со словарём; путать shallow copy и deep copy во вложенных структурах.
Общий список в fromkeys()
dict.fromkeys(keys, []) создаёт одну ссылку.
Как исправить
Используйте {key: [] for key in keys}.
get() вместо проверки обязательного поля
get() скрывает отсутствие ключа.
Как исправить
Если ключ должен быть всегда, [] и явный KeyError могут быть полезнее.
setdefault() меняет словарь
Метод не только читает, но и добавляет ключ.
Как исправить
Используйте get(), если менять словарь нельзя.
View object принят за список
keys(), values(), items() обновляются вместе со словарём.
Как исправить
Для снимка используйте list(dictionary.keys()).
copy() для вложенных данных
copy() не копирует вложенные списки.
Как исправить
Используйте copy.deepcopy() или создавайте новую структуру вручную.