Словари и методы в Python. Добавление списка в словарь
Словарь в 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]: 'а списки не могут'}
Получаем данные из словаря
Чтобы получить значения конкретного ключа используют квадратные скобки
# берём значение с ключом «марафон» dictionary['марафон']
Но если вы захотите получить значение, используя не существующий ключ, будет ошибка. Чтобы избежать ошибок, применяют методы.
Как добавлять и обновлять ключи
Добавление в словарь новых пар выполняется просто:
# Добавляем ключ «туфля» со значением «род обуви, который закрывает ногу не выше щиколотки» dictionary['туфля'] = 'род обуви, который закрывает ногу не выше щиколотки'
Для обновления делаем то же самое:
# Обновляем ключ "туфля" и присваиваем ему значение "хорошая туфля" dictionary['туфля'] = 'хорошая туфля'
Как удалять ключи
Чтобы удалить ключ и соответствующее значение из словаря, используем del:
# Удаляем значение с ключом "противостоять" из словаря del dictionary['противостоять']
Методы
Cловари имеют много полезных методов, помогающих в работе. Рассмотрим наиболее популярные.
Update
Метод
# Добавляем две пары в словарь dictionary, используя метод update dictionary.update({'бежал': 'бежать в прошедшем времени', 'туфли': 'туфля во множественном числе'}) >>> dictionary {'марафон': 'гонка бегунов длиной около 26 миль', 'персона': 'человек', 'бежал': 'бежать в прошедшем времени', 'бежать': 'двигаться со скоростью', 'туфля': 'род обуви, закрывающей ногу не выше щиколотки', 'туфли': 'туфля во множественном числе'}
Возможно, вы спросите, почему в словаре данные расположены в другом порядке, а не в том, в котором были в него внесены. Ответ прост — словари не упорядочены.
Get
# Представьте, что у нас есть словарь story_count story_count = {'сто': 100, 'девяносто': 90, 'двенадцать': 12, 'пять': 5}
# Ключ "двенадцать" существует и метод get в данном случае вернёт 12 story_count.get('двенадцать')
Способ используют при проверке, а есть ли ключи в словаре:
>>> story_count.get('два') None
Кроме того, вы можете указать значение по умолчанию — оно вернётся вместо
# Метод вернёт 0 в случае, если данного ключа не существует story_count.get('два', 0)
Pop
Метод
>>> story_count.pop('девяносто') 90 >>> story_count {'двенадцать': 12, 'сто': 100, 'пять': 5}
Keys
Метод
>>> story_count.keys() ['сто', 'пять', 'двенадцать']
Values
Возвратит коллекцию значений в словаре.
>>> story_count.values() [100, 12, 5]
Items
Если нужно вернуть пары «ключ — значение», используют
>>> dictionary.items() [('персона', 'человек'), ('бежать', 'двигаться со скоростью'), ('туфля', 'род обуви, закрывающей ногу не выше щиколотки'), ('бежал', 'бежать в прошедшем времени'), ('марафон', 'гонка бегунов длиной около 26 миль'), ('туфли', 'туфля во множественном числе')]
Итерация через словарь
В «Питоне» есть возможность выполнить итерацию в словаре по каждому ключу:
for key in story_count: print(key)
Кстати, вместо
Внимательно посмотрите на участок кода ниже: в нём цикл for использует метод
>>> for key, value in dictionary.items(): print(key, value) ('персона', 'человек') ('бежать', 'двигаться со скоростью') ('туфля', 'род обуви, закрывающей ногу не выше щиколотки') ('бежал', 'бежать в прошедшем времени') ('марафон', 'гонка бегунов длиной около 26 миль') ('туфли', 'туфля во множественном числе')
Словарь и список: выполнение преобразования из списка в словарь
Словарь (dictionary) и список (list) — типы, непохожие по своей структуре. Однако для отдельных видов списка есть возможность преобразования списка в словарь. Для этого используют встроенную функцию
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».