Словари
В Python словарь представляет собой упорядоченный (начиная с Python > 3.7) набор пар key
: value
.
Пример словаря:
Установить ключ, значение с помощью оператора индекса []
¶
>>> my_cat = {
... 'size': 'fat',
... 'color': 'gray',
... 'disposition': 'loud',
... }
>>> my_cat['age_years'] = 2
>>> print(my_cat)
...
# {'size': 'fat', 'color': 'gray', 'disposition': 'loud', 'age_years': 2}
Получить значение с помощью оператора индекса []
¶
В случае отсутствия ключа в словаре выдается KeyError
.
>>> my_cat = {
... 'size': 'fat',
... 'color': 'gray',
... 'disposition': 'loud',
... }
>>> print(my_cat['size'])
...
# fat
>>> print(my_cat['eye_color'])
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# KeyError: 'eye_color'
values()¶
Метод values()
получает значения словаря:
>>> pet = {'color': 'red', 'age': 42}
>>> for value in pet.values():
... print(value)
...
# red
# 42
keys()¶
Метод keys()
получает ключи словаря:
Нет необходимости использовать .keys(), так как по умолчанию вы будете перебирать ключи:
items()¶
Метод items()
получает элементы словаря и возвращает их в виде
>>> pet = {'color': 'red', 'age': 42}
>>> for item in pet.items():
... print(item)
...
# ('color', 'red')
# ('age', 42)
Используя методы keys()
, values()
и items()
, цикл for
может перебирать ключи, значения или пары ключ-значение в словаре соответственно.
>>> pet = {'color': 'red', 'age': 42}
>>> for key, value in pet.items():
... print(f'Key: {key} Value: {value}')
...
# Key: color Value: red
# Key: age Value: 42
get()¶
Метод get()
возвращает значение элемента с заданным ключом. Если ключ не существует, возвращается None
:
>>> wife = {'name': 'Rose', 'age': 33}
>>> f'My wife name is {wife.get("name")}'
# 'My wife name is Rose'
>>> f'She is {wife.get("age")} years old.'
# 'She is 33 years old.'
>>> f'She is deeply in love with {wife.get("husband")}'
# 'She is deeply in love with None'
Вы также можете изменить значение None
по умолчанию на любое по вашему выбору:
>>> wife = {'name': 'Rose', 'age': 33}
>>> f'She is deeply in love with {wife.get("husband", "lover")}'
# 'She is deeply in love with lover'
Добавление элементов с помощью setdefault()¶
Таким образом можно добавить элемент в словарь:
Используя метод setdefault
, мы можем сделать тот же код короче:
>>> wife = {'name': 'Rose', 'age': 33}
>>> wife.setdefault('has_hair', True)
>>> wife
# {'name': 'Rose', 'age': 33, 'has_hair': True}
Удаление элементов¶
pop()¶
Метод pop()
удаляет и возвращает элемент на основе заданного ключа.
>>> wife = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
>>> wife.pop('age')
# 33
>>> wife
# {'name': 'Rose', 'hair': 'brown'}
popitem()¶
Метод popitem()
удаляет последний элемент словаря и возвращает его.
>>> wife = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
>>> wife.popitem()
# ('hair', 'brown')
>>> wife
# {'name': 'Rose', 'age': 33}
del()¶
Метод del()
удаляет элемент на основе заданного ключа.
>>> wife = {'name': 'Rose', 'age': 33, 'hair': 'brown'}
>>> del wife['age']
>>> wife
# {'name': 'Rose', 'hair': 'brown'}
clear()¶
Метод clear()
удаляет все элементы словаря.
Проверка ключей в словаре¶
>>> person = {'name': 'Rose', 'age': 33}
>>> 'name' in person.keys()
# True
>>> 'height' in person.keys()
# False
>>> 'skin' in person # You can omit keys()
# False
Проверка значений в словаре¶
>>> person = {'name': 'Rose', 'age': 33}
>>> 'Rose' in person.values()
# True
>>> 33 in person.values()
# True
Красивая печать¶
>>> import pprint
>>> wife = {'name': 'Rose', 'age': 33, 'has_hair': True, 'hair_color': 'brown', 'height': 1.6, 'eye_color': 'brown'}
>>> pprint.pprint(wife)
# {'age': 33,
# 'eye_color': 'brown',
# 'hair_color': 'brown',
# 'has_hair': True,
# 'height': 1.6,
# 'name': 'Rose'}
Объединить два словаря¶
Для Python 3.5+: