JavaRush /Курсы /Модуль 1: Python Core /Отображения словарей

Отображения словарей

Модуль 1: Python Core
7 уровень, 2 лекция
Открыта

3.1 Отображение дочерних элементов

Как вы уже знаете, словарь у себя внутри хранит пары элементов ключ-значение. У него есть методы, которые позволяют нам получить доступ к этим данным: keys(), values() и items(). Ниже я расскажу о них подробнее.

Важно! Эти методы возвращают не просто списки элементов, а так называемые отображения (view). Отображения словаря предоставляют динамическое представление ключей, значений и пар ключ-значение, содержащихся в словаре. Эти отображения автоматически обновляются при изменении словаря.

Метод keys()

Метод keys() возвращает представление всех ключей в словаре. Результатом является объект dict_keys, который поддерживает итерацию и другие операции, аналогичные множествам.


person = {"name": "Alice", "age": 25, "city": "New York"}
keys = person.keys()
print(keys)  # dict_keys(['name', 'age', 'city'])

Итерация по ключам


for key in person.keys():
    print(key)
# Вывод: # name # age # city

Метод values()

Метод values() возвращает представление всех значений в словаре. Результатом является объект dict_values, который также поддерживает обход циклом.


person = {"name": "Alice", "age": 25, "city": "New York"}
values = person.values()
print(values)  # dict_values(['Alice', 25, 'New York'])

Итерация по значениям


for value in person.values():
    print(value)
# Вывод: # Alice # 25 # New York

Метод items()

Метод items() возвращает представление всех пар ключ-значение в словаре. Результатом является объект dict_items, который поддерживает работу с циклами.


person = {"name": "Alice", "age": 25, "city": "New York"}
items = person.items()
print(items)  # dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])

Итерация по парам ключ-значение


for key, value in person.items():
    print(f"{key}: {value}")
# Вывод: # name: Alice # age: 25 # city: New York

3.2 Динамическое обновление

Одним из важных свойств отображений словаря является их динамическое обновление. Это означает, что, если словарь изменяется, отображения автоматически отражают эти изменения.


person = {"name": "Alice", "age": 25}
keys = person.keys()
print(keys)  # dict_keys(['name', 'age'])
            
# Добавление нового элемента
person["city"] = "New York"
print(keys)  # dict_keys(['name', 'age', 'city'])

Преобразование отображений в другие коллекции

Отображения словаря можно преобразовать в другие коллекции, такие как списки, множества или кортежи, для выполнения дополнительных операций.


person = {"name": "Alice", "age": 25, "city": "New York"}

# Преобразование keys() в список
keys_list = list(person.keys())
print(keys_list)  # ['name', 'age', 'city']
            
# Преобразование values() в множество
values_set = set(person.values())
print(values_set)  # {'Alice', 25, 'New York'}
            
# Преобразование items() в список кортежей
items_list = list(person.items())
print(items_list)  # [('name', 'Alice'), ('age', 25), ('city', 'New York')]
2
Задача
Модуль 1: Python Core, 7 уровень, 2 лекция
Недоступна
Ищем ключи.
Ищем ключи.
2
Задача
Модуль 1: Python Core, 7 уровень, 2 лекция
Недоступна
Отображение пар.
Отображение пар.
Комментарии (13)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Natalia Murashko Уровень 33
26 июля 2026
В лекції чітко сказано: >>Эти методы возвращают не просто списки элементов, а так называемые отображения (view). Отображения словаря предоставляют динамическое представление ключей, значений и пар ключ-значение, содержащихся в словаре. Эти отображения автоматически обновляются при изменении словаря. Але коли я намагалася застосувати цей принцип в коді, перевірка видала мені зовсім протилежне: При цьому мій код виконується правильно, як і очікується в завданні.

good = {"name":"banana","price":1.99,"amount":200}
good_items = good.items()
for key,value in good_items:
    print(key,":",value)

print()
good["item"] = "kg"

for key,value in good_items:
    print(key,":",value)
Vlad Уровень 1
3 июня 2026
Почему в условии не сказано, что ключи должны строго соответствовать тем, что принимаются в ответе? Почему нельзя сразу чётко формулировать задание? Получаются ошибки, которые, в сущности, и не ошибки вовсе, а попытки-то считаются)
Aleksei Kurochkin Уровень 16
27 апреля 2026
Даже без разбивки на ключ-значение принимает решение 🤔 Хотя в правильном идет разбивка.

for item in product.items():
    print(item)
PaPaY Уровень 13
24 марта 2026

user_dict = {
    "название": "груша",
    "цена": 5.0,
    "количество": 10
}
for key, value in user_dict.items():
    print(f"Ключ: {key}, Значение: {value}")
user_dict["акция"] = "Есть"
print(user_dict)
PaPaY Уровень 13
24 марта 2026

user_dict = {"title": "War and Peace",
             "author": "Lev Tolstoy",
             "year": 1863
}
for key in user_dict.keys():
    print(key)
Анатолий Уровень 63
28 января 2026
В конце урока есть ошибка:

# Преобразование items() в список кортежей
items_list = list(person.items())
print(items_list)  # [('name', 'Alice'), ('age', 25), ('city', 'New York')]
Тут снова преобразование в список, а не кортеж.
Anonymous #6475281 Уровень 29
27 февраля 2026
Написано же - список кортежей :)
Anonymous #6466042 Уровень 64
28 января 2026
5 попыток из-за "неправильных названий ключей". в данном курсе мой враг - не написание кода, а соответствие лингвистики в условиях задач...
Rodney Уровень 17
9 октября 2025
На многие недостатки можно закрыть глаза, НО камон ... решение самих авторов не подходит под рамки 'Правильного решения', которое кстати они вайбкодят через гпт.
Рустем Уровень 1
31 августа 2025
когда будут настоящие задания? раз уж задач всего две, ну дайте дайте сложнее, интереснее
_den Уровень 77
28 февраля 2025
мы же только в этой лекции view прошли и их нельзя использовать в задаче)
SWK Уровень 26
27 марта 2025
Можно и нужно, о чём недвусмысленно говорит ТЗ.
Роман Уровень 93
9 сентября 2025
нельзя, если используешь как в статье, то задание не засчитывается "После добавления новой пары ключ-значение в словарь, необходимо заново получить обновленный список пар с помощью метода items() и вывести их на экран. "