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')]
Коментарі (7)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Oberon Рівень 22
22 серпня 2025
product = { "name": "Wireless Mouse", "brand": "Logitech", "model": "MX Master 3S", "category": "Electronics", "price": 99.99, "currency": "EUR", "in_stock": True, "warranty_years": 2 } product_items = product.items() for key, value in product_items: print(f"{key} --> {value}") product['features'] = ["Bluetooth", "USB-C charging", "Ergonomic design"] ### щоб компілятор пропустив рішення ### product_items = product.items() for key, value in product_items: print(f"{key} --> {value}") Не зрозуміло, чому компелятор не пропускає рішення, а виводе рекомендацію: після додавання нової пари у словник, потриібно знову отримати items() і вивести всі пари По-перше, навіщо знову отримувати об'єкт dict_items, якщо при доданні нової пари до словника, dict_items динамічно відновлюєтся? А друга річ, у вимогах написано: програма повинна додати нову пару у словник і знову вивести всі пари, !!! без ще одного виклику метода .items() для словника, що є логичним бо - дивись "По-перше"
Pavlo Kushnir Рівень 26
2 червня 2025
Что за бред? Почему, Если в задании написано "Наприклад"? "Словник повинен містити ключі 'назва', 'автор' та 'рік видання'. Змініть ключі 'writer' на 'автор' та 'title' на 'назва'."
Pavlo Kushnir Рівень 26
2 червня 2025
А русские слова "название" и "год" оказались более правильными, чем английские. Очень странно. book = {"автор":"Vern", "название":"Deep", "год":2014} keys = book.keys() print(keys)
Andriy Trubchanin Рівень 23
15 лютого 2025

# варіант ітерації по ключах в цій лекції
for key in person.keys():
    print(key)
    
# варіант ітерації по ключах в попередній лекції
for key in person:
    print(key)
Результат той самий.
16 липня 2025
Десь було (а може і не тут), що за замовчуванням в словнику дані видаються по ключам, якщо не вказане інше
negoda Рівень 31
19 липня 2025
Под капотом и по сути не совсем. Во втором варианте без метода .keys() неявно вызывается магический метод .__iter__(), первый же вариант более читабелен, а так-же предполагает возможность преобразовать результат в список так как на выходе дает обьект типа dict_keys (проверяется через type()). Но по сути, если это не нужно и нужна просто итерация по словарю, то второй вариант действительно подходит лучше, поэтому нужно в первую очередь смотреть по обстоятельствам.
negoda Рівень 31
19 липня 2025
Привет, если еще интересно можешь прочитать мое обьяснение выше.