Словари и методы в Python. Добавление списка в словарь
2026-03-10 22:58 Diff

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

Словарь (dictionary) в Python используется наряду с кортежами и списками, похожие структуры есть и в других языках программирования (ассоциативный массив в PHP, словарь в C#).

Словарь, как и список, хранит коллекцию элементов. И каждый элемент в словаре, как было уже упомянуто, имеет уникальный ключ — с ним ассоциировано какое-либо значение.

Вот синтаксис словаря в Python:

dictionary = { ключ1:значение1, ключ2:значение2, ....}

А вот ещё пример словаря:

dictionary = {'персона': 'человек', 'марафон': 'гонка бегунов длиной около 26 миль', 'противостоять': 'оставаться сильным, несмотря на давление', 'бежать': 'двигаться со скоростью'}

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

gender_dict = {0: 'муж', 1: 'жен'}

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

dictionary = {(1, 2.0): 'кортежи могут быть ключами', 1: 'целые числа могут быть ключами', 'бежать': 'строки тоже', ['носок', 1, 2.0]: 'а списки не могут'}

Получаем данные из словаря

Чтобы получить значения конкретного ключа используют квадратные скобки []. Представим, что у нас в словаре присутствует пара «марафон»: 26.

# берём значение с ключом «марафон» dictionary['марафон']

Но если вы захотите получить значение, используя не существующий ключ, будет ошибка. Чтобы избежать ошибок, применяют методы.

Как добавлять и обновлять ключи

Добавление в словарь новых пар выполняется просто:

# Добавляем ключ «туфля» со значением «род обуви, который закрывает ногу не выше щиколотки» dictionary['туфля'] = 'род обуви, который закрывает ногу не выше щиколотки'

Для обновления делаем то же самое:

# Обновляем ключ "туфля" и присваиваем ему значение "хорошая туфля" dictionary['туфля'] = 'хорошая туфля'

Как удалять ключи

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

# Удаляем значение с ключом "противостоять" из словаря del dictionary['противостоять']

Методы

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

Update

Метод update() нужен при объявлении нескольких пар одновременно. В качестве аргумента метод принимает другой словарь:

# Добавляем две пары в словарь dictionary, используя метод update dictionary.update({'бежал': 'бежать в прошедшем времени', 'туфли': 'туфля во множественном числе'}) >>> dictionary {'марафон': 'гонка бегунов длиной около 26 миль', 'персона': 'человек', 'бежал': 'бежать в прошедшем времени', 'бежать': 'двигаться со скоростью', 'туфля': 'род обуви, закрывающей ногу не выше щиколотки', 'туфли': 'туфля во множественном числе'}

Возможно, вы спросите, почему в словаре данные расположены в другом порядке, а не в том, в котором были в него внесены. Ответ прост — словари не упорядочены.

Get

# Представьте, что у нас есть словарь story_count story_count = {'сто': 100, 'девяносто': 90, 'двенадцать': 12, 'пять': 5}

get() возвратит значение по указанному ключу. А если его нет, то метод вернёт нам None.

# Ключ "двенадцать" существует и метод get в данном случае вернёт 12 story_count.get('двенадцать')

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

>>> story_count.get('два') None

Кроме того, вы можете указать значение по умолчанию — оно вернётся вместо None, если ключа не будет в словаре:

# Метод вернёт 0 в случае, если данного ключа не существует story_count.get('два', 0)

Pop

Метод pop() служит для удаления ключа и возвращения соответствующего ему значения.

>>> story_count.pop('девяносто') 90 >>> story_count {'двенадцать': 12, 'сто': 100, 'пять': 5}

Keys

Метод keys() необходим, чтобы возвратить коллекцию ключей в словаре:

>>> story_count.keys() ['сто', 'пять', 'двенадцать']

Values

Возвратит коллекцию значений в словаре.

>>> story_count.values() [100, 12, 5]

Items

Если нужно вернуть пары «ключ — значение», используют items():

>>> dictionary.items() [('персона', 'человек'), ('бежать', 'двигаться со скоростью'), ('туфля', 'род обуви, закрывающей ногу не выше щиколотки'), ('бежал', 'бежать в прошедшем времени'), ('марафон', 'гонка бегунов длиной около 26 миль'), ('туфли', 'туфля во множественном числе')]

Итерация через словарь

В «Питоне» есть возможность выполнить итерацию в словаре по каждому ключу:

for key in story_count: print(key)

Кстати, вместо story_count можно применять story_count.keys().

Внимательно посмотрите на участок кода ниже: в нём цикл for использует метод items(), чтобы получить пары «ключ — значение» на каждую итерацию:

>>> for key, value in dictionary.items(): print(key, value) ('персона', 'человек') ('бежать', 'двигаться со скоростью') ('туфля', 'род обуви, закрывающей ногу не выше щиколотки') ('бежал', 'бежать в прошедшем времени') ('марафон', 'гонка бегунов длиной около 26 миль') ('туфли', 'туфля во множественном числе')

Словарь и список: выполнение преобразования из списка в словарь

Словарь (dictionary) и список (list) — типы, непохожие по своей структуре. Однако для отдельных видов списка есть возможность преобразования списка в словарь. Для этого используют встроенную функцию dict(). Необходимо, чтобы список хранил набор вложенных списков. Также нужно, чтобы каждый вложенный список состоял из 2-х элементов. В результате во время конвертации списка в словарь 1-й элемент превратится в ключ, 2-й — в значение:

users_list = [ ["+111123455", "Tom"], ["+384767557", "Bob"], ["+958758767", "Alice"] ] users_dict = dict(users_list) print(users_dict) # {"+111123455": "Tom", "+384767557": "Bob", "+958758767": "Alice"}

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

users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict)

Материал подготовлен специально для OTUS на основании статьи «Python Dictionary and Dictionary Methods».