Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 63

Вспомнили ли мы о Терри Гиллиаме на этот раз?

>>> 'Gilliam' in pythons

False

Черт.

Словари

89

Получение элемента словаря

с помощью конструкции [ключ]

Этот вариант использования словаря — самый распространенный. Вы указываете

словарь и ключ, чтобы получить соответствующее значение:

>>> pythons['Cleese']

'John'

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

>>> pythons['Marx']

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

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'])

90

Глава 3. Наполнение Python: списки, кортежи, словари и множества

В Python 2 функция keys() возвращает простой список. В Python 3 эта функция возвращает

dict_keys() — итерабельное представление ключей. Это удобно для крупных словарей, по-

скольку не требует времени и памяти для создания и сохранения списка, которым вы, воз-

можно, даже не воспользуетесь. Но зачастую вам нужен именно список. В Python 3 надо

вызвать функцию list(), чтобы преобразовать dict_keys в список:

>>> list(signals.keys())

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