В предыдущем уроке мы познакомились с основами словарей: созданием, доступом к значениям и базовыми операциями. Теперь мы изучим методы словарей, которые позволяют эффективно работать с ключами, значениями и парами «ключ — значение».
В этом уроке мы разберём методы keys(), values(), items(), get(), pop() и научимся перебирать словари различными способами.
keys().values().items() для работы с парами «ключ — значение».get(key, default).pop().keys() — получение всех ключейМетод keys() возвращает все ключи словаря. Результат можно использовать для перебора или преобразования в список.
student_grades = {
"Alice": 85,
"Bob": 92,
"Charlie": 78
}
# Получение всех ключей
all_keys = student_grades.keys()
print(all_keys) # dict_keys(['Alice', 'Bob', 'Charlie'])
# Преобразование в список
keys_list = list(student_grades.keys())
print(keys_list) # ['Alice', 'Bob', 'Charlie']
# Перебор ключей
for name in student_grades.keys():
print(name)
# Вывод:
# Alice
# Bob
# Charlievalues() — получение всех значенийМетод values() возвращает все значения словаря.
student_grades = {
"Alice": 85,
"Bob": 92,
"Charlie": 78
}
# Получение всех значений
all_values = student_grades.values()
print(all_values) # dict_values([85, 92, 78])
# Преобразование в список
values_list = list(student_grades.values())
print(values_list) # [85, 92, 78]
items() — получение пар «ключ — значение»Метод items() возвращает все пары «ключ — значение» в виде кортежей. Это самый удобный способ перебрать словарь целиком.
student_grades = {
"Alice": 85,
"Bob": 92,
"Charlie": 78
}
# Получение всех пар
all_items = student_grades.items()
print(all_items) # dict_items([('Alice', 85), ('Bob', 92), ('Charlie', 78)])
# Перебор пар с распаковкой
for name, grade in student_grades.items():
print(f"{
get(key, default) — безопасный доступМетод get() позволяет безопасно получить значение по ключу. Если ключа нет, возвращается значение по умолчанию (или None, если оно не указано).
student_grades = {
"Alice": 85,
"Bob": 92
}
# Ключ существует
print(student_grades.get("Alice")) # 85
# Ключа нет — возвращается `None`
print(student_grades.get("Charlie")) # None
# Ключа нет — возвращается значение по умолчанию
print(student_grades.get("Charlie", 0))
get()# Подсчёт оценок
grades = {"Alice": 85, "Bob": 92, "Alice": 90} # Alice обновлена
# Безопасное увеличение счётчика
counts = {}
for name in ["Alice", "Bob", "Charlie", "Alice"]:
counts[name] = counts.get(name, 0) +
pop(key, default) — удаление и возврат значенияМетод pop() удаляет элемент по ключу и возвращает его значение. Если ключа нет и указано значение по умолчанию, возвращается оно (элемент не удаляется). Если ключа нет и значение по умолчанию не указано, возникает ошибка KeyError.
student_grades = {
"Alice": 85,
"Bob": 92,
"Charlie": 78
}
# Удаление существующего ключа
removed = student_grades.pop("Bob")
print(removed) # 92
print(student_grades) # {'Alice': 85, 'Charlie': 78}
# Удаление несуществующего ключа с значением по умолчанию
removed = student_grades.pop("David"
Существует несколько способов перебрать словарь. Выбор зависит от того, что именно нужно получить.
student_grades = {"Alice": 85, "Bob": 92}
for name in student_grades:
print(name, student_grades[name])
# Вывод:
# Alice 85
# Bob 92keys()for name in student_grades.keys():
print(name, student_grades[name])for grade in student_grades.values():
print(grade)
# Вывод:
# 85
# 92items() (рекомендуется)for name, grade in student_grades.items():
print(f"{name}: {grade}")
# Вывод:
# Alice: 85
# Bob: 92Что выведет этот код?
d = {"a": 1, "b": 2, "c": 3}
keys = list(d.keys())
print(keys)Что выведет этот код?
d = {"x": 10, "y": 20, "z": 30}
values = list(d.values())
print(sum(values))Что выведет этот код?
d = {"one": 1, "two": 2}
result = d.get("three", 0)
print(result)Что выведет этот код?
d = {"apple": 5, "banana": 3}
removed = d.pop("apple")
print(removed)
print(len(d))Напиши код, который перебирает словарь и выводит все пары «ключ — значение» в формате: ключ = значение.
d = {"name": "Иван", "age": 25, "city": "Москва"}
for key, value in d.items():
print(f"{key} = {value}")
# Вывод:
# name = Иван
# age = 25
# city = МоскваНапиши код, который находит сумму всех значений в словаре.
prices = {"apple": 50, "banana": 30, "orange": 40}
total = sum(prices.values())
print(total)
# Вывод:
# 120Напиши код, который проверяет, есть ли в словаре ключ "score". Если есть — выводит его значение, если нет — выводит "Ключ не найден".
d = {"name": "Анна", "age": 20}
if "score" in d:
print(d["score"])
else:
print("Ключ не найден")
# Или короче с get():
value = d.get("score", "Ключ не найден")
print(value)
# Вывод:
# Ключ не найденНапиши код, который удаляет из словаря все элементы с чётными значениями.
d = {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}
# Создаём список ключей для удаления (чтобы избежать изменения словаря во время перебора)
keys_to_remove = [key for key, value in d.items() if value % 2 == 0]
# Удаляем элементы
for key in
keys() — получает все ключи словаря.values() — получает все значения словаря.items() — получает все пары «ключ — значение» (удобно для перебора).get(key, default) — безопасный доступ к значению (не вызывает ошибку при отсутствии ключа).pop(key, default) — удаляет элемент и возвращает его значение.items().keys() и values() — проверка in даст неверный результат, если ожидать поиск по значениям.items() без распаковки — код станет запутанным и легко приведёт к неверной обработке пары ключ-значение.dict[key] без проверки существования ключа — при отсутствии ключа возникнет KeyError.pop() без значения по умолчанию не вызовет ошибку при отсутствии ключа — программа завершится ошибкой или даст неверный результат.Дан словарь с оценками учеников. Выведи все имена (ключи) с помощью метода keys().
grades = {"Алиса": 5, "Борис": 4, "Вика": 5}Дан словарь с ценами товаров. Найди сумму всех цен с помощью values().
prices = {"яблоко": 50, "банан": 40, "апельсин": 60}Напиши программу, которая выводит все пары «товар — цена» в формате "товар: X руб." с помощью items().
Используй метод get() для безопасного получения оценки ученика. Если ученика нет, выведи "Не найден".
grades = {"Алиса": 5, "Борис": 4}
name = input()Напиши программу, которая удаляет элемент из словаря с помощью pop() и выводит удалённое значение.
Напиши функцию count_words(text), которая принимает строку и возвращает словарь с количеством каждого слова.
Дан словарь с числовыми значениями. Выведи три ключа с наибольшими значениями. Используй items() и сортировку.
Даны два словаря, в которых значениями могут быть вложенные словари. Напиши функцию, которая рекурсивно объединяет их (при совпадении ключей берётся значение из второго). Упрощение: одно level вложенности достаточно.