💻 Примеры

⚡ Кратко: примеры

fromkeys() создаёт словарь с одинаковым значением для набора ключей.

Если передать fromkeys() изменяемый объект, все ключи будут ссылаться на один и тот же объект.

get() безопасно возвращает значение или default вместо KeyError.

setdefault() возвращает значение ключа, а если ключа нет - добавляет его.

keys(), values() и items() возвращают динамические view objects.

Вложенные словари позволяют хранить иерархичные данные.

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

Dict comprehension создаёт словарь в одну читаемую конструкцию.

Топ-3 ошибки: использовать dict.fromkeys(keys, []) для независимых списков; ожидать, что list(dictionary.keys()) будет обновляться вместе со словарём; путать shallow copy и deep copy во вложенных структурах.

Переводчик в две стороны

Источник предлагает искать перевод и по ключам, и по значениям.

dictionary = {
    "Butterfly": "Бабочка",
    "Training": "Обучение",
    "Restaurant": "Ресторан",
    "Programming": "Программирование",
}

word = "Бабочка"
if word in dictionary:
    print("Перевод:", dictionary[word])
elif word in dictionary.values():
    for english, russian in dictionary.items():
        if russian == word:
            print("Перевод:", english)
            break
else:
    print("Перевод отсутствует.")

Проверка скобок через словарь

Словарь хранит соответствие закрывающей и открывающей скобки.

string = "({[]})"
stack = []
brackets = {")": "(", "]": "[", "}": "{"}
is_valid = True

for char in string:
    if char in brackets.values():
        stack.append(char)
    elif char in brackets:
        if stack and stack[-1] == brackets[char]:
            stack.pop()
        else:
            is_valid = False
            break

print(f"Скобки '{string}' валидны:", is_valid and not stack)

Реверс словаря с повторяющимися значениями

setdefault() удобно накапливает список ключей.

data = {"a": 1, "b": 2, "c": 1, "d": 3}
reversed_dict = {}

for key, value in data.items():
    reversed_dict.setdefault(value, []).append(key)

print("Перевернутый словарь:", reversed_dict)

Счётчик букв в словах

Вложенный словарь хранит частоты букв для каждого слова.

words = ["anna", "bennet", "john"]
result = {}

for word in words:
    counts = {}
    for letter in word:
        counts[letter] = counts.get(letter, 0) + 1
    result[word] = counts

print(result)