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

Если вы работали с другими языками программирования, которые поддерживают только массивы и списки, то полюбите словари.


В других языках программирования словари могут называться ассоциативными массивами, хешами или хеш-таблицей. В Python словарь также называется dict для экономии места.

Создание словаря с помощью {}

Чтобы создать словарь, вам нужно обернуть в фигурные скобки ({}) разделенные запятыми пары ключ: значение. Самым простым словарем является пустой словарь, не содержащий ни ключей, ни значений:

>>>> empty_dict = {}

>>>> empty_dict

>{}

Создадим небольшой словарь, включающий цитаты из «Словаря сатаны» Амброза Бирса:

>>>> bierce = {

>…·····"day": "A period of twenty-four hours, mostly misspent",

>…·····"positive": "Mistaken at the top of one's voice",

>…·····"misfortune": "The kind of fortune that never misses",

>…·····}

>>>>

Ввод имени словаря в интерактивный интерпретатор выведет все его ключи и значения:

>>>> bierce

>{'misfortune': 'The kind of fortune that never misses',

>'positive': "Mistaken at the top of one's voice",

>'day': 'A period of twenty-four hours, mostly misspent'}


В Python допускается наличие запятой после последнего элемента списка, кортежа или словаря. Вам также не обязательно использовать выделение пробелами, как я это сделал в предыдущем примере, когда вы вводите ключи и значения внутри фигурных скобок. Это лишь улучшает читабельность.

Преобразование с помощью функции dict()

Вы можете использовать функцию dict(), чтобы преобразовывать последовательности из двух значений в словари. (Вы иногда можете столкнуться с последовательностями «ключ — значение» вида «Стронций, 90, углерод, 14» или «Vikings, 20, Packers, 7».) Первый элемент каждой последовательности применяется как ключ, а второй — как значение.

Для начала рассмотрим небольшой пример, использующий lol (список, содержащий списки, которые состоят из двух элементов):

>>>> lol = [['a', 'b'], ['c', 'd'], ['e', 'f']]

>>>> dict(lol)

>{'c': 'd', 'a': 'b', 'e': 'f'}


Помните, что порядок ключей в словаре может быть произвольным, он зависит от того, как вы добавляете элементы.


Мы могли бы использовать любую последовательность, содержащую последовательности, которые состоят из двух элементов. Рассмотрим остальные примеры.

Список, содержащий двухэлементные кортежи:

>>>> lot = [('a', 'b'), ('c', 'd'), ('e', 'f')]

>>>> dict(lot)

>{'c': 'd', 'a': 'b', 'e': 'f'}

Кортеж, включающий двухэлементные списки:

>>>> tol = (['a', 'b'], ['c', 'd'], ['e', 'f'])

>>>> dict(tol)

>{'c': 'd', 'a': 'b', 'e': 'f'}

Список, содержащий двухсимвольные строки:

>>>> los = ['ab', 'cd', 'ef']