Объяснение к уроку
К концу этого урока ты сможешь:
В предыдущем уроке списковое включение создавало список из итерируемого объекта. Словарные включения используют фигурные скобки с парой key: value:
new_dict = {key_expression: value_expression for item in source}Используй .items(), чтобы обрабатывать ключи и значения словаря вместе; добавь завершающий if для исключения записей. Словарь сохраняет одно значение для каждого ключа. Если несколько входных записей создают одинаковый ключ, более поздний результат заменяет более раннее значение. Исходная коллекция не изменяется.
Множественное включение также использует фигурные скобки, но без двоеточия:
new_set = {expression for item in source}Множества сохраняют уникальные значения, но порядок их перебора не гарантируется. Когда для вывода требуется предсказуемый порядок, отсортируй полученное множество перед выводом или возвратом в виде списка. Как и со списковыми включениями, выбирай обычный цикл, если преобразование состоит из нескольких шагов или содержит побочные эффекты.
Выбери ключ и производное значение для каждого элемента:
packages = ["api", "worker", "mailer"]
name_lengths = {package: len(package) for package in packages}
print(name_lengths)Вывод:
{'api': 3, 'worker': 6, 'mailer': 6}Каждый пакет становится ключом; его длина становится значением.
Используй .items(), чтобы получить доступ к обеим частям каждой записи:
balances = {"ops": 55, "research": 20, "support": 80}
raised = {team: amount + 10 for team, amount in balances.items() if amount >= 50}
print(raised)Вывод:
{'ops': 65, 'support': 90}Запись research исключена, а исходный словарь по-прежнему содержит свои первоначальные значения.
Множественное включение сохраняет каждую отдельную очищенную метку один раз:
raw_labels = [" Backend ", "backend", "DATA", "data "]
labels = {value.strip().lower() for value in raw_labels}
print(sorted(labels))Вывод:
['backend', 'data']Мы используем sorted() для предсказуемого отображения — а не потому, что само множество имеет отсортированный порядок.
Когда разные значения генерируют одинаковый ключ, побеждает более позднее присваивание:
entries = ["DEV", "dev", "Test"]
last_seen = {name.lower(): name for name in entries}
print(last_seen)Вывод:
{'dev': 'dev', 'test': 'Test'}Обе первые записи генерируют dev; более позднее исходное значение перезаписывает более раннее.
| Намерение | Синтаксис |
|---|---|
| Словарь из элементов | {key: value for item in source} |
| Фильтрация словаря | {k: v for k, v in source.items() if condition} |
| Множество уникальных значений | {expression for item in source} |
| Предсказуемое отображение | sorted(your_set) |
if идут после части for, а не перед ней.{} для словаря или set() для множества.