Простой Python. Современный стиль программирования (Любанович) - страница 44

Получение элемента словаря с помощью конструкции [ключ]

Этот вариант использования словаря — самый распространенный. Вы указываете словарь и ключ, чтобы получить соответствующее значение:

>>>> pythons['Cleese']

>'John'

Если ключа в словаре нет, будет сгенерировано исключение:

>>>> pythons['Marx']

>Traceback (most recent call last):

>··File "", line 1, in

>KeyError: 'Marx'

Есть два хороших способа избежать возникновения этого исключения. Первый из них — проверить, имеется ли заданный ключ, с помощью ключевого слова in, что вы уже видели в предыдущем разделе:

>>>> 'Marx' in pythons

>False

Второй способ — использовать специальную функцию словаря get(). Вы указываете словарь, ключ и опциональное значение. Если ключ существует, вы получите связанное с ним значение:

>>>> pythons.get('Cleese')

>'John'

Если такого ключа нет, получите опциональное значение, если указывали его:

>>>> pythons.get('Marx', 'Not a Python')

>'Not a Python'

В противном случае будет возвращен объект None (интерактивный интерпретатор не выведет ничего):

>>>> pythons.get('Marx')

>>>>

Получение всех ключей с помощью функции keys()

Вы можете использовать функцию keys(), чтобы получить все ключи словаря. Для следующих примеров мы берем другой словарь:

>>>> signals = {'green': 'go', 'yellow': 'go faster', 'red': 'smile for the camera'}

>>>> signals.keys()

>dict_keys(['green', 'red', 'yellow'])


В Python 2 функция keys() возвращает простой список. В Python 3 эта функция возвращает dict_keys() — итерабельное представление ключей. Это удобно для крупных словарей, поскольку не требует времени и памяти для создания и сохранения списка, которым вы, возможно, даже не воспользуетесь. Но зачастую вам нужен именно список. В Python 3 надо вызвать функцию list(), чтобы преобразовать dict_keys в список:

>>>> list(signals.keys())

>['green', 'red', 'yellow']


В Python 3 вам также понадобится использовать функцию list(), чтобы преобразовать результат работы функций values() и items() в обычные списки. Я пользуюсь этой функцией в своих примерах.

Получение всех значений с помощью функции values()

Чтобы получить все значения словаря, используйте функцию values():

>>>> list(signals.values())

>['go', 'smile for the camera', 'go faster']

Получение всех пар «ключ — значение» с помощью функции items()

Когда вам нужно получить все пары «ключ — значение» из словаря, используйте функцию items():

>>>> list(signals.items())

>[('green', 'go'), ('red', 'smile for the camera'), ('yellow', 'go faster')]

Каждая пара будет возвращена как кортеж вроде ('green', 'go').

Присваиваем значения с помощью оператора =, копируем их с помощью функции copy()