💻 Примеры

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

Summary session 9 повторяет множества, хеширование, set-операции, frozenset и основы словарей.

set нужен для уникальности и операций над наборами.

frozenset полезен там, где нужен неизменяемый и хешируемый набор.

dict хранит пары ключ-значение и быстро ищет значение по ключу.

Ключи dict должны быть хешируемыми, поэтому list, set и dict не подходят.

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

Для сравнимого вывода set лучше сортировать.

Главная цель summary - обнаружить пробелы перед продолжением темы словарей.

Топ-3 ошибки: ожидать от set сохранения порядка; путать элемент множества и ключ словаря; считать, что update() создаёт дубликат ключа.

Уникальные символы без пробелов

Повторение задания из блока множеств.

text = "hello world"
unique_chars = set(text)
unique_chars.discard(" ")
print("Уникальные символы:", sorted(unique_chars))

Общие ключи словарей

Ключи словаря можно превратить в set и пересечь.

dict1 = {"a": 1, "b": 2, "c": 3}
dict2 = {"b": 5, "d": 7, "a": 8}

common_keys = sorted(set(dict1) & set(dict2))
print("Общие ключи:", common_keys if common_keys else "-")

Подмножество словаря

Пара должна совпасть целиком: и ключ, и значение.

dict1 = {"a": 1, "b": 2}
dict2 = {"a": 1, "b": 2, "c": 3}

print(all(item in dict2.items() for item in dict1.items()))

Группировка по frozenset

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

users = {
    "alice": ["read", "write"],
    "bob": ["write", "read"],
    "charlie": ["read"],
}

groups = {}
for user, permissions in users.items():
    key = frozenset(permissions)
    groups.setdefault(key, []).append(user)

print(groups)