Методи словників
Оскільки словник — тип даних мутабельний, його методи можуть змінювати об'єкт, до якого їх було застосовано.
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}
>>>