Skip to main content

Словники

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

Словник записується, як перелік пар ключ : значення, розділених комою та взятих в фігурні дужки: {'A1':2, 'A2':3}

Словник є змінюваним типом даних: в нього можна додавати нові елементи з довільними ключами і вилучати вже існуючі елементи.

Для задання порожнього словника можна скористатися однією з наступних команд:

a = {}

b = dict()

Задання словника з наперед заданим набором елементів:

a = {'A1':2, 'A2':3}

b = dict(id1=4, id2=8)

Враховуючи те, що елементом словника є пара ключ=значення, то, як такого, доступу до елемента словник не має. В словнику передбачена можливість доступу до значення елемента словника за його ключем. Для того, щоб звернутися до значення елемента словника, необхідно вказати ім’я змінної словника та в квадратних дужках ключ необхідного елемента (ім’я_словника[ключ]).

e = {'A1':2, 'A2':3}

print(e['A2'])96 # 3

При спробі доступу за неіснуючим у словнику ключем виникає виняток KeyError.

Можна перевірити приналежність деякого ключа до словника, використовуючи оператор in (ключ in ім’я_словника).

Щоб додати елемент до словника, потрібно вказати ім’я змінної словника та в квадратних дужках новий ключ та виконати присвоєння нового значення (ім’ясловника[новийключ]=значення).

e['A3']=4

Для видалення елемента зі словника можна скористатися командою del (del ім’я_словника[ключ]).

del e['A1']

Методи словників

dict.fromkeys(iterable [, value]). Створює новий словник, ключами якого будуть елементи з iterable і однаковим для всіх значенням value.

d.fromkeys(['a', 'b', 'c'], 12)

# { 'a': 12, 'b': 12, 'c': 12}}

dict.update([other]). Доповнює словник dict парами (ключ=значення) з словника other, якщо ключ вже присутній в словнику, то його значення оновлюється.

chars = {'a': 1, 'b': 2}

chars.update({"c": 3})

print(chars) # {'a': 1, 'b': 2, "c": 3}

dict.copy(). Повертає копію словника dict.

chars = {'a': 1, 'b': 2}

chars_copy = chars.copy()

chars_copy == chars # True

dict.get(key[, default]). Повертає значення зі словника dict за ключем key. У випадку відсутності елемента з ключем key повертається значення default.

chars = {'a': 1, 'b': 2}

c_idx = chars.get('c', -1)

print(c_idx) # -1

dict.setdefault(key[, default]). Повертає значення зі словника dict за ключем key. У випадку відсутності елемента з ключем key повертається значення default, і до словника додається елемент з ключем key і значенням default.

my_dict = {'a': 1}

my_dict.setdefault('a', 2) # {'a': 1}

my_dict.setdefault('b', 2) # {'a': 1, 'b': 2}

my_dict.setdefault('c') # {'a': 1, 'b': 2, 'c': None}

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

{'a': 1, 'b': 2}.keys()

# dict_keys(['a', 'b'])

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

marks = {'Physics':67, 'Maths':87}

marks.values() # dict_values([67, 87])

dict.items(). Повертає ключі та значення елементів словника dict у вигляді об’єкту перегляду словника, що забезпечують динамічний перегляд записів словника. Елементи словника подаються в вигляді кортежів (ключ, значення).

marks = {'Physics':67, 'Maths':87}

marks.items() # dict_items([('Physics', 67), ('Maths', 87)])

dict.pop(key[, default]). Вилучає зі словника dict елемент з ключем key та повертає його значення, як результат виконання функції. У випадку відсутності елемента з ключем key повертається значення default. Якщо default не вказаний, і елемент з ключем key відсутній, то виникає виняток KeyError.

chars = {'a': 1, 'b': 2}

b_num = chars.pop('b')

print(chars) # {'a': 1}

print(b_num) # 2

dict.popitem(). Вилучає і повертає пару (ключ, значення) зі словника dict, як результат виконання функції. Пари повертаються в порядку LIFO (last-in first-out). Якщо словник порожній, то виникає виняток KeyError.

car = {"brand": "Ford", "model": "Mustang", "year": 1964}

car.popitem() # ("year", 1964)

print(car) # {'brand': 'Ford', 'model': 'Mustang'}

dict.clear(). Очищує словник dict (вилучає всі елементи зі словнику)

chars = {'a': 1, 'b': 2}

chars.clear()

print(chars) # {}