Перейти до змісту

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

Оскільки словник — тип даних мутабельний, його методи можуть змінювати об'єкт, до якого їх було застосовано.

get()

d.get(key, default)

Повертає зі словника об'єкт з ключем "key". Якщо вказаного ключа немає у словнику, повертає "default" (необов'язковий аргумент, за замовчуванням повертає None)

>>> d = {1:11, 2:22}
>>> d.get(1)
11
>>> d.get(3) # поверне None
>>> d.get(3, 'foo')
'foo'
>>> d[3]  # а так отримаємо вийняток
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 3
>>>

pop()

d.pop(key, default)

Повертає значення по ключу 'key' зі словинка 'd' і потім видаляє цей ключ. Якщо вказаного ключа немає у словнику, повертає 'defalt' (необов'язковий аргумент, за замовчуванням виникає вийняткова ситуація 'KeyError').

>>> d = {1:11, 2:22}
>>> d.pop(1)
11
>>> d
{2: 22}
>>> d.pop(3,'foo')
'foo'
>>> d
{2: 22}
>>> d.pop(3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 3

update()

d.update(other)

Поновлює словник 'd' додаючи пари "ключ-значення" зі словника 'other'. Існуючі ключі перезаписуються.

>>> d1 = {1:11, 2:22, 3:33}
>>> d2 = {1:'foo', 333:'bar'}
>>> d1.update(d2)
>>> d1
{1: 'foo', 2: 22, 3: 33, 333: 'bar'}
>>>

clear()

d.clear()

Видаляє усі елементи зі словника "d".

>>> d1 = {1:11, 2:22}
>>> d2 = d1 # d1 і d2 вказують на один і той самий об'єкт
>>> d1
{1: 11, 2: 22}
>>> d2
{1: 11, 2: 22}
>>> d1.clear()
>>> d1
{}
>>> d2
{}
>>>

Порівняйте вищенаведене з наступним:

>>> d1 = {1:11, 2:22}
>>> d2 = d1 # d1 і d2 вказують на один і той самий об'єкт
>>> d1
{1: 11, 2: 22}
>>> d2
{1: 11, 2: 22}
>>> d1 = {} # буде створено новий об'єкт
>>> d1
{}
>>> d2
{1: 11, 2: 22}
>>>

До практики!

Реалізуємо функцію count_letters(string), яка буде підраховувати скільки раз зустрічається кожна буква у символьному рядку string.

def count_letters(string):
    '''
    Функція підраховує частоту букв у символьному рядку string.
    Повертає словник {буква:скільки раз зустрілась}
    '''
    letters_counter = {}
    for char in string.lower(): # 'Б' і 'б' — це одна і таж сама буква
        if char.isalpha(): # підраховуємо тільки букви
            letters_counter[char] = letters_counter.get(char, 0) + 1 # якщо буква зістрілась перший раз, її ьчастота є 0
    return letters_counter

Дивимось що вийшло:

>>> print(count_letters('Абабагаламага'))
{'а': 7, 'б': 2, 'г': 2, 'л': 1, 'м': 1}
>>> print(count_letters('100500 котиків'))
{'к': 2, 'о': 1, 'т': 1, 'и': 1, 'і': 1, 'в': 1}
>>>