Словник (dict) в мові програмування Python – це невпорядкована структура даних (починаючи з версії Python 3.6, dict зберігає свої елементи впорядкованими), котра дозволяє зберігати пари “ключзначення“. Доступ до значення в словнику здійснюється за ключем, котрий є унікальним в межах одного словника.

Словник в Python може бути корисним для зберігання структурованих даних, оскільки він дозволяє легко організувати дані у вигляді “ключзначення“. Наприклад інформація про продукти, де ключами буде код продуктів, а значеннями – їх характеристики, такі як назва, ціна, кількість, тощо:

products = {
    'p001': {'name': 'Phone', 'price': 500, 'quantity': 10},
    'p002': {'name': 'Laptop', 'price': 1200, 'quantity': 5}
}

Створення словника (dict)

Створення порожнього словника:

person = {}
print(type(person))

# <class 'dict'>

Інший спосіб за допомогою виклику конструктора класу dict:

person = dict()

Створення словника з елементами:

person = {'first_name': 'Георгій', 'last_name': 'Бандура'}
print(person)

# {'first_name': 'Георгій', 'last_name': 'Бандура'}

Операції з елементами словника

Додавання елемента в словник:

person = {'first_name': 'Наталія', 'last_name': 'Слюсар'}
print(person)
person['age'] = 30
print(person)

# {'first_name': 'Наталія', 'last_name': 'Слюсар'}
# {'first_name': 'Наталія', 'last_name': 'Слюсар', 'age': 30}

Отримання значення словника за ключем:

person = {'first_name': 'Едуард', 'last_name': 'Матвієнко'}

first_name = person['first_name']
last_name = person['last_name']

print(f'{first_name} {last_name}')

# Едуард Матвієнко

У випадку, якщо такого ключа не існує в словнику, буде створено виняток KeyError.

Зміна значення для ключа:

person = {'first_name': 'Ярослав', 'last_name': 'Бабак'}
print(person)

person['first_name'] = 'Тарас'
print(person)

# {'first_name': 'Ярослав', 'last_name': 'Бабак'}
# {'first_name': 'Тарас', 'last_name': 'Бабак'}

Видалення елемента словника за допомогою ключового слова del:

person = {'first_name': 'Емілія', 'last_name': 'Михалюк'}
print(person)

del person['last_name']
print(person)

# {'first_name': 'Емілія', 'last_name': 'Михалюк'}
# {'first_name': 'Емілія'}

Видалення елемента, за допомогою метода pop:

person = {'first_name': 'Георгій', 'last_name': 'Гаврилець'}
print(person)

deleted_element_value = person.pop('first_name')
print(person)
print(deleted_element_value)

# {'first_name': 'Нестор', 'last_name': 'Гаврилець'}
# {'last_name': 'Гаврилець'}
# Нестор

Метод pop видаляє елемент по ключу та повертає його значення. Якщо такого ключа не існує в словнику, створюється виняток KeyError.

Операції зі словником

Перевірка наявності ключа в словнику:

person = {'first_name': 'Панас', 'last_name': 'Андрійович'}
print('first_name' in person)

# True

Отримати кількість елементів в словнику:

person = {'first_name': 'Юстим', 'last_name': 'Романчук'}
print(len(person))

# 2

Отримати об’єкти представлення всіх ключів та значень словника:

person = {'first_name': 'Альбіна', 'last_name': 'Шовкопляс'}
print(person.keys())
print(person.values())

# dict_keys(['first_name', 'last_name'])
# dict_values(['Альбіна', 'Шовкопляс'])

Ітерація по елементам словника:

person = {'first_name': 'Валерій', 'last_name': 'Макаренко'}

for key, value in person.items():
    print(f'{key}: {value}')
    
# first_name: Валерій
# last_name: Макаренко

Видалити всі елементи словника:

person = {'first_name': 'Олесь', 'last_name': 'Гузій'}
person.clear()

print(person)

# {}

Оновлення словника елементами з іншого словника:

fruits = {'apple': 'яблуко', 'orange': 'апельсин'}
fruits.update({'kiwi': 'ківі', 'pear': 'груша'})

print(fruits)

# {'apple': 'яблуко', 'orange': 'апельсин', 'kiwi': 'ківі', 'pear': 'груша'}

Якщо ключі вже існують в поточному словнику, їх значення будуть оновлені.

Використання метода get

Метод get в словниках Python використовується для отримання значення за заданим ключем. Він приймає два аргументи:

  • ключ, за яким потрібно отримати значення
  • необов’язковий аргумент, що містить значення за замовчуванням, яке буде повернуто у випадку, коли ключ не знайдений у словнику (замість створення винятку KeyError)

Приклад використання методу get:

fruits = {'apple': 5, 'orange': 2}
kiwi = fruits.get('kiwi', 0)

print(kiwi)

# 0

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

Особливості словника в Python

  • невпорядкованість – елементи словника не зберігаються в певному порядку, тому доступ до них здійснюється за допомогою ключів, а не за індексом. Це означає, що порядок елементів в словнику не має значення (в версії Python 3.6 це було змінено, і тепер словник зберігає свої елементи впорядкованими)
  • унікальність ключів – кожен ключ в словнику повинен бути унікальним. Якщо спробувати додати ключ, котрий вже існує в словнику, то його значення буде оновлене
  • змінність – словник є змінним типом даних. Це означає, що його можна змінювати, додавати нові елементи, видаляти або змінювати існуючі
  • гнучкість в типах даних – у словниках можна використовувати різні типи даних як для ключів, так і для значень. Це дозволяє зберігати та обробляти різноманітні дані
  • швидкий доступ до елементів – оскільки словник базується на хеш-таблицях, доступ до елементів за допомогою ключа є ефективною операцією, особливо при великій кількості елементів
  • можливість використання різних типів ключів – ключами в словнику можуть бути не лише рядки або числа, а також будь-які інші об’єкти що хешуються, такі як кортежі чи користувацькі класи

Мітки: