Получение элемента словаря с помощью конструкции [ключ]
Этот вариант использования словаря — самый распространенный. Вы указываете словарь и ключ, чтобы получить соответствующее значение:
>>>> 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()