Словари со смешанными значениями

Словари могут состоять не только из строк. Значения словарей могут быть любого типа, включая целые, логические, произвольные объекты, или даже другие словари. И значения в одном словаре не обязаны быть одного и того же типа; можно смешивать и сочетать их, как вам необходимо. Ключи словаря более ограниченны, но они могут быть строками, целыми числами и некоторыми другими типами. Ключи разных типов тоже можно смешивать и сочетать в одном словаре.

На самом деле вы уже видели словарь с не строковыми ключами и значениями в вашей первой программе на Python.

SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}

Давайте вытащим эту переменную из нашей программы и поработаем с ней в интерактивной оболочке Python.

>>> SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
... 1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}
>>> len(SUFFIXES) ①
2
>>> 1000 in SUFFIXES ②
True
>>> SUFFIXES[1000] ③
['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
>>> SUFFIXES[1024] ④
['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']
>>> SUFFIXES[1000][3] ⑤
'TB'

Так же, как для списков и множеств, функция len() возвращает количество элементов словаря.
И так же, как со списками и множествами, можно использовать оператор in, чтобы проверить, определён ли конкретный ключ в словаре.
1000 является ключом в словаре SUFFIXES; его значение — список из восьми элементов (восьми строк, если быть точным).
Аналогично, 1024 — ключ словаря SUFFIXES; и его значение также является списком из восьми элементов.
Так как SUFFIXES[1000] является списком, то можно обратиться к отдельным элементам списка по их порядковым номерам, которые индексируются с нуля.

Словари в логическом контексте

Пустые словари — ложь, все остальные — истина.

Вы можете использовать словари в логическом контексте, например в операторе if.

>>> def is_it_true(anything):
... if anything:
... print("да, это истина")
... else:
... print("нет, это ложь")
...
>>> is_it_true({}) ①
нет, это ложь
>>> is_it_true({'a': 1}) ②
да, это истина

В логическом контексте пустой словарь ложен.
Любой словарь с хотя бы одной парой ключ—значение истинен.

Константа None

None — это специальная константа в Python. Она обозначает пустое значение. None — это не то же самое, что False. None также и не 0. None даже не пустая строка. Если сравнивать None с другими типами данных, то результатом всегда будет False.

None — это просто пустое значение. None имеет свой собственный тип (NoneType). Вы можете присвоить None любой переменной, но вы не можете создать других объектов типа NoneType. Все переменные, значение которых None равны друг другу.

>>> type(None)
<class 'NoneType'>
>>> None == False
False
>>> None == 0
False
>>> None == ''
False
>>> None == None
True
>>> x = None
>>> x == None
True
>>> y = None
>>> x == y
True

None в логическом контексте

В логическом контексте None всегда является ложью, а not None — истиной.

>>> def is_it_true(anything):
... if anything:
... print("да, это истина")
... else:
... print("нет, это ложь")
...
>>> is_it_true(None)
нет, это ложь
>>> is_it_true(not None)
да, это истина

Материалы для дальнейшего чтения

  • Логические операции
  • Численные типы
  • Типы-последовательности
  • Типы-множества
  • Типы-отображения
  • Модуль fractions
  • Модуль math
  • PEP 237: Унификация длинных целых и целых
  • PEP 238: Изменение оператора деления

Генераторы

Нам приходится сильнее напрягать свое воображение не для того, чтобы, как в художественной литературе, представить себе то, чего нет на самом деле, а для того, чтобы постичь то, что действительно происходит.
Ричард Фейнман

Погружение

В каждом языке программирования есть одна такая особенность, сложно устроенная, но специально упрощённая штука. Если вы раньше писали на другом языке, можете и не обратить на это внимания, поскольку ваш старый язык не так сильно упрощал эту штуку (потому что он был занят тем, что сильно упрощал какую-нибудь другую штуку). В этой главе вы изучите генераторы списков, словарей и множеств — три взаимосвязанные концепции, сконцентрированные вокруг одной очень мощной технологии. Но сначала я хочу немного отклониться от нашего повествования, чтобы рассказать вам о двух модулях, которые помогут вам передвигаться по вашей локальной файловой системе.

Наши рекомендации