JavaRush /Курси /Модуль 1: Python Core /Робота зі словником

Робота зі словником

Модуль 1: Python Core
Рівень 7 , Лекція 1
Відкрита

2.1 Отримання кількості елементів

В Python для отримання кількості елементів у словнику використовується вбудована функція len(). Ця функція повертає кількість пар ключ-значення в словнику. Ну або кількість ключів, якщо хочете.

Приклад використання функції:


person = {"name": "Alice", "age": 25, "city": "New York"}
num_elements = len(person)
print(num_elements)  # Вивід: 3 

У цьому прикладі у нас є словник person з трьома елементами. Функція len(person) повертає кількість елементів у словнику, яке дорівнює 3.

Перевірка на порожність словника

Ви можете використовувати функцію len() для перевірки порожності словника. Це корисно в умовах і циклах.


empty_dict = {}
print(len(empty_dict))  # Вивід: 0

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

if len(person) > 0:
    print("Словник не порожній")
else:
    print("Словник порожній")

Словник з вкладеними структурами

Функція len() враховує тільки кількість верхньорівневих ключів, незалежно від того, що міститься як значення.


complex_dict = {
    name: "Alice",
    details: {
        age: 25,
        city: "New York"
    },
    hobbies: ["reading", "traveling"]
}
print(len(complex_dict))  # Вивід: 3

У цьому прикладі у нас є словник з вкладеними структурами даних. len(complex_dict) повертає 3, оскільки на верхньому рівні є три ключі: "name", "details" і "hobbies".

len() ігнорує ключі всередині вкладених структур даних, таких як "age" і "city" всередині словника "details", тому що len() рахує тільки верхньорівневі ключі. Якщо вам потрібно порахувати кількість всіх елементів, включаючи вкладені структури, необхідно буде використати рекурсивний метод. Але про нього не сьогодні.

2.2 Визначення типу

Функція type() в Python використовується для визначення типу об'єкта. При роботі зі словниками type() дозволяє визначити, що об'єкт є екземпляром класу dict. Це може бути корисно в різних сценаріях, наприклад, для перевірки типу даних перед виконанням операцій над словником.

Приклади використання:

Перевірка типу об'єкта


person = {"name": "Alice", "age": 25, "city": "New York"}
print(type(person))  # Вивід: <class 'dict'>

У цьому прикладі ми створюємо словник person і використовуємо type для визначення його типу. Функція повертає <class 'dict'>, вказуючи, що person є словником.

Умова перевірки типу даних

Функція type() може бути використана для перевірки типу даних в умовних виразах, що дозволяє виконувати певні операції тільки для об'єктів типу dict.


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

if type(data) is dict:
    print("Це словник.")
else:
    print("Це не словник.")

У цьому прикладі умовний вираз перевіряє, чи є data словником, і виконує відповідний код.

Функція type() може бути використана всередині користувацьких функцій для перевірки типу аргументів, що дозволяє гарантувати, що функція обробляє правильний тип даних.

Приклад:


def process_data(data):
    if type(data) is dict:
        print("Обробка словника...")
        # Виконання операцій над словником
    else:
        print("Помилка: очікувався словник.")

data = {"name": "Alice", "age": 25, "city": "New York"}
process_data(data)

У цьому прикладі функція process_data перевіряє, чи є аргумент data словником, і виконує відповідні операції тільки для словників.

2.3 Отримання елемента

Робота з елементами словника схожа на роботу зі списком чи кортежем — ми також будемо використовувати квадратні дужки. Але замість індексу елемента в дужках потрібно вказувати ключ. Ключем словника може бути будь-який незмінний елемент: рядок, число чи, наприклад, кортеж.


словник[ключ]

Приклад:


person = {"name": "Alice", "age": 25, "city": "New York"}
name = person["name"]
print(name)  # Вивід: Alice

Якщо ключ відсутній, то виникне помилка:


person = {"name": "Alice", "age": 25, "city": "New York"}
person["country"]  # виникне помилка KeyError: 'country'

Метод get(key, def_value)

Метод get() дозволяє безпечно отримувати значення за ключем. Якщо ключ відсутній, метод повертає значення за замовчуванням (None, якщо значення за замовчуванням не вказане). Це запобігає виникненню винятку KeyError.


person = {"name": "Alice", "age": 25, "city": "New York"}
age = person.get("age")
print(age)  # Вивід: 25

country = person.get("country", "USA")
print(country)  # Вивід: USA

Другим параметром у метод get() можна передати значення, яке потрібно повернути, якщо потрібного ключа в словнику немає.

Метод setdefault() працює аналогічно методу get(), але якщо ключа в словнику немає, метод не просто повертає значення за замовчуванням, а додає до словника нову пару ключ: значення.


person = {"name": "Alice", "age": 25}
city = person.setdefault("city", "New York")
print(city)  # Вивід: New York
print(person)  # Вивід: {'name': 'Alice', 'age': 25, 'city': 'New York'}
Коментарі (6)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Alex Zotov Рівень 18
28 жовтня 2025

dict1 = {}
dict2 = {"name" : "Alice", "age" : 25}
dict3 = {"name" : "Alice", "age" : 25, "city" : "New York"}


def check_empty(**dicts):
    for name, d in dicts.items():
        if len(d) > 0:
            print(f"{name}: непорожній, {len(d)} елементів")
        else:
            print(f"{name}: порожній, 0 елементів")


check_empty(dict1=dict1, dict2=dict2, dict3=dict3)
16 липня 2025
тепер чомусь перевірка в словнику два побачила множину
negoda Рівень 31
19 липня 2025
Вы забыли про квадратные скобки после фигурных! Вот пример :

person = dict([("name", "John"), ("age", 30), ("city", "New York")])
16 липня 2025
якась дивна перевірка, англійську не розуміє))
Наталья Крейц Рівень 18
7 червня 2025

def check_empty(data):
    print(f"Dict has a {len(data)} element")
    if len(data) > 0:
        print("Dict isnt empty")
    else:
        print("Dict is empty")

first_dict = {}
second_dixt = {"1": 1}
third_dict = {"2": 2, "3": 3, "4":4, "5":5}

check_empty(first_dict)
check_empty(second_dixt)
check_empty(third_dict)
В чому проблема даного коду, який не пройшов ЖОДНОГО запиту, якщо він створю функцію на перевірку, створю декілька словників з різною довжиною, перевіряє кожен словник і виводить кількість елементів всіх словників разом з повідомленням про наповненість??? Чи я не бачу чогось очевидного?
negoda Рівень 31
19 липня 2025
Предпологаю, что потому что либо проверка ожидает что в условии проверки словаря будет не > a >=, либо что условие задачи подразумевает отдельную функцию ТОЛЬКО для проверки на пустоту словаря, и отдельные команды print() на вывод длинны словаря. Мой код работает:

def check_empty(dict_name):
    if len(dict_name) <= 0:
        print("Dictionary is empty")
    else:
        print("Dictionary is not empty")


dict1 = {'name':'john', 'age':'30', 'city':'newyork'}
dict2 = {}

print(len(dict1))
print(len(dict2))
check_empty(dict1)
check_empty(dict2)