Объяснение к уроку
После этого урока ты сможешь:
.get(key, default) для чтения необязательных ключей с сохранением существующих ложных значений..items() и распаковывать каждую пару.Словари сопоставляют имена со значениями. В предыдущем уроке рассматривалось обращение record[key], вызывающее KeyError при отсутствии ключа. Когда ожидается необязательное поле, record.get(key, fallback) возвращает резервное значение только в том случае, если ключ отсутствует. Уже существующее значение 0, False, "" или None остается без изменений.
Словарь является итерируемым объектом: цикл for key in record обходит его ключи. Явные методы .keys() и .values() позволяют обращаться только к ключам или только к значениям. Используй .items(), когда тебе нужны оба: каждая итерация возвращает пару (key, value), которую можно распаковать.
В современном Python словари сохраняют порядок вставки, поэтому цикл по неизмененному словарю следует порядку добавления записей. Это не означает, что ключи являются числовыми индексами, и не предполагает сортировку по алфавиту.
Метод .get() предназначен для поиска; метод .items() — для перебора пар. Они решают разные задачи и становятся особенно полезными в сочетании с подсчетами по условию.
Резервное значение применяется только тогда, когда ключ отсутствует.
limits = {"retries": 0, "timeout": 15}
print(limits.get("retries", 3))
print(limits.get("workers", 2))Вывод:
0
2Перебор словаря напрямую дает его ключи; метод .keys() делает это намерение явным.
channels = {"email": True, "sms": False}
for channel in channels.keys():
print(f"Channel: {channel}")Вывод:
Channel: email
Channel: smsИспользуй .values(), когда ключи не влияют на вычисления.
durations = {"lint": 8, "build": 12, "test": 20}
total = 0
for duration in durations.values():
total += duration
print(f"Total: {total}")Вывод:
Total: 40Метод .items() предоставляет каждую метку и соответствующее значение вместе.
statuses = {"api": "ready", "worker": "paused"}
for name, status in statuses.items():
print(f"{name}: {status}")Вывод:
api: ready
worker: paused| Потребность | Python |
|---|---|
| Необязательный поиск | record.get("name", "unknown") |
| Только ключи | record.keys() или for key in record |
| Только значения | record.values() |
| Ключи и значения | record.items() |
| Цикл по парам | for key, value in record.items(): |
record.get("key", default) не заменяет существующее ложное значение.for a, b in record перебирает ключи, а не пары; используй .items() для распаковки записей..keys(), .values() и .items() возвращают представления (views), а не обычные копии списков..values() приводит к потере связанной метки ключа, если в выводе нужны обе части.