""" Урок 35. Summary session 9 — весь код примеров одним файлом. Источник: subjects/python-fundamentals/course/lessons/35-summary-session-9/examples.html Файл собран автоматически (tools/build_lesson_examples.py): правьте страницу урока. Запуск: python lesson-35.py """ # ==================================================================== # Пример 1. Повторение: set убирает дубликаты # ==================================================================== # unique_chars.py text = "hello world" unique_chars = set(text) unique_chars.discard(" ") print("Уникальные символы:", sorted(unique_chars)) # Уникальные символы: ['d', 'e', 'h', 'l', 'o', 'r', 'w'] # ==================================================================== # Пример 2. Повторение: четыре операции над множествами # ==================================================================== # set_operations.py set1 = {1, 2, 3, 4} set2 = {3, 4, 5} print(set1 | set2) # {1, 2, 3, 4, 5} — объединение print(set1 & set2) # {3, 4} — пересечение print(set1 - set2) # {1, 2} — разность print(set1 ^ set2) # {1, 2, 5} — симметрическая разность print(set2 <= set1) # False — set2 не подмножество set1 print({3, 4}.issubset(set1)) # True # ==================================================================== # Пример 3. Повторение: базовые операции словаря # ==================================================================== # dict_basics.py user = {"name": "Alice", "age": 30} if "name" in user: print(user["name"]) # Alice user.update({"age": 31, "city": "New York"}) print(user) # {'name': 'Alice', 'age': 31, 'city': 'New York'} # ==================================================================== # Пример 4. Общие и уникальные ключи двух словарей через set # ==================================================================== # common_and_unique_keys.py 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 "-") # Общие ключи: ['a', 'b'] only_in_dict1 = sorted(set(dict1) - set(dict2)) print("Только в dict1:", only_in_dict1) # Только в dict1: ['c'] # ==================================================================== # Пример 5. Проверка «подмножества» словаря по парам # ==================================================================== # dict_subset_check.py d1 = {"a": 1, "b": 2} d2 = {"a": 1, "b": 2, "c": 3} print(all(item in d2.items() for item in d1.items())) # True d3 = {"a": 1, "b": 99} print(all(item in d2.items() for item in d3.items())) # False # ==================================================================== # Пример 6. Группировка по frozenset — множество как ключ словаря # ==================================================================== # group_by_frozenset.py 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) # {frozenset({'read', 'write'}): ['alice', 'bob'], frozenset({'read'}): ['charlie']} # — порядок элементов внутри frozenset не гарантирован, у вас может быть другим # ==================================================================== # Пример 7. Ловушка: {} — это словарь, а не множество # ==================================================================== # empty_literal_trap.py empty_dict = {} empty_set = set() print(type(empty_dict), type(empty_set)) # d = {"x": 1} d.update({"x": 2}) # тот же ключ — не дубликат, а замена print(d) # {'x': 2} print(len(d)) # 1 — ключ остался единственным # ==================================================================== # Пример 8. in означает разное для set и для dict # ==================================================================== # in_set_vs_dict.py s = {"a", "b", "c"} print("a" in s) # True — проверка элемента d = {"a": 1, "b": 2} print("a" in d) # True — проверка ключа print(1 in d) # False — 1 не ключ, а значение print(1 in d.values()) # True — а вот так проверяется значение # ==================================================================== # Пример 9. Собираем вместе: инвентаризация по двум складам # ==================================================================== # warehouse_inventory.py warehouse_a = {"bolt", "nut", "screw"} warehouse_b = {"nut", "washer"} all_items = warehouse_a | warehouse_b counts = {item: (item in warehouse_a) + (item in warehouse_b) for item in all_items} print(sorted(all_items)) # ['bolt', 'nut', 'screw', 'washer'] print(dict(sorted(counts.items()))) # {'bolt': 1, 'nut': 2, 'screw': 1, 'washer': 1}