Создайте словарь из списка ключей и значений в Python
В этом посте мы обсудим, как создать словарь из списка ключей и значений в Python.
Например, keys = [‘A’, ‘B’, ‘C’] а также values = [1, 2, 3] должен привести к словарю .
1. Использование zip() с dict() функция
Самый простой и элегантный способ построить словарь из списка ключей и значений — использовать метод zip() функция с конструктором словаря.
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
values = [ 1 , 2 , 3 ]
dictionary = dict ( zip ( keys , values ) )
print ( dictionary ) #
2. Использование словарного понимания
Другой подход заключается в использовании zip() с пониманием словаря. Это часто полезно, когда вам нужны пары ключ-значение вместо пар ключ-значение или вы применяете некоторую функцию сопоставления к каждому ключу или значению. Это может быть реализовано как:
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
values = [ 1 , 2 , 3 ]
dictionary = < k : v for k , v in zip ( keys , values ) >
print ( dictionary ) #
Вот как выглядел бы код без zip() :
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
values = [ 1 , 2 , 3 ]
dictionary = < keys [ i ] : values [ i ] for i in range ( len ( keys ) ) >
print ( dictionary ) #
Если вам нужно создать новый словарь с ключами из iterable с тем же значением, вы можете сделать следующее.
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
dictionary = < key : value for key in keys >
print ( dictionary ) #
В качестве альтернативы вы можете использовать fromkeys() функция класса:
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
dictionary = dict . fromkeys ( keys , value )
print ( dictionary ) #
Это все о создании словаря из списка ключей и значений в Python.
Оценить этот пост
Средний рейтинг 4.96 /5. Подсчет голосов: 25
Голосов пока нет! Будьте первым, кто оценит этот пост.
Сожалеем, что этот пост не оказался для вас полезным!
Расскажите, как мы можем улучшить этот пост?
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
Подписывайся
0 Комментарии
Встроенные отзывы
Просмотреть все комментарии
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации
- Все проблемы
- Практика DSA
- 100 самых популярных задач
- 50 лучших классических задач
- Лучшие алгоритмы
- Компилятор С/С++
- Компилятор Java
- Компилятор Python
- Компилятор JavaScript
- компилятор PHP
- Компилятор C#
- Свяжитесь с нами
- Политика конфиденциальности
- условия обслуживания
- Подпишитесь на новые публикации
Techie Delight © 2023 Все права защищены.
Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно
Python список в словарь: полное руководство
В Python вы можете преобразовать список в словарь, используя dictionary comprehension (генераторы словарей), dict.fromkeys() или метод zip() . Все эти три метода создают новый словарь. Они не изменяют существующий список.
Списки и словари в Python – это две структуры, используемые для хранения данных. Но что, если нам нужно преобразовать список в словарь? Вам это может понадобиться, если вы захотите присвоить уникальную метку каждому сохраненному вами значению. А это возможно только в словаре.
В Python есть несколько способов преобразовать список в словарь и несколько встроенных функций, которые можно использовать с этой целью. В этой статье мы рассмотрим все эти преобразования на примерах.
Списки и словари в Python
Списки и словари являются примерами коллекций Python. С их помощью мы можем хранить несколько (или даже много) похожих значений вместе, в одной структуре данных.
Список позволяет хранить данные в определенном порядке. Вот пример списка в Python:
takeout_prices = [2.50, 2.75, 4.50, 5.00]
Наш список takeout_prices содержит четыре значения.
А словари, в отличие от списков, не упорядочены.
Вот пример словаря в Python:
takeout_prices =
Словари полезны, если вы хотите связать каждое значение с какой-нибудь меткой — ключом. А если вы храните похожие значения, например, цены или имена, которым не можете назначить уникальные ключи, лучше использовать списки.
Преобразование списка в словарь
Преобразовать список в словарь можно при помощи метода dict.fromkeys() , генераторов словарей или метода zip() . Метод zip() полезен, если вы хотите объединить два списка в словарь.
Давайте вкратце разберем эти методы:
- dict.fromkeys() : используется для создания словаря из списка. При желании можно установить значение по умолчанию для всех ключей. При этом вы не можете установить индивидуальные значения для каждого элемента в словаре.
- Генератор словарей: создает новый словарь из существующего списка. Вы можете указать разные значения для каждого ключа в словаре. Генератор словаря по своей структуре похож на генератор списков.
- zip() : преобразует два (или больше) списка в список кортежей. Для преобразования этого списка кортежей в словарь можно использовать метод dict() .
Давайте применим каждый из этих трех методов, чтобы на примерах разобрать преобразование списка в словарь.
Кстати если вы ищете работу, то посмотрите свежие вакансии по Python
Превращаем список в словарь при помощи dict.fromkeys()
Допустим, у нас есть список фруктов, которые мы хотим превратить в словарь. Значение, присвоенное каждому фрукту, должно быть In stock (т.е. в наличии):
fruits = ["Apple", "Pear", "Peach", "Banana"]
Создадим этот словарь с помощью dict.fromkeys() . Этот метод принимает список ключей, которые вы хотите превратить в словарь. При желании можно указать значение, которое должно быть присвоено всем ключам.
Значение можно указать только одно. То есть нельзя прописать, что один ключ должен иметь одно значение, а другой ключ — другое.
Давайте превратим наш список фруктов в словарь:
fruits = ["Apple", "Pear", "Peach", "Banana"] fruit_dictionary = dict.fromkeys(fruits, "In stock") print(fruit_dictionary)
Наш код возвращает объекты из этого списка в виде словаря:
Сначала мы объявляем переменную под именем fruits . В ней хранятся имена ключей, которые мы хотим использовать в нашем словаре.
Затем мы используем метод dict.fromkeys() для создания словаря с ключами, которые мы сохранили в списке fruits . Этот метод присваивает каждому ключу значение In stock .
Наконец, мы выводим получившийся словарь в консоль.
Если бы мы не указали в нашем коде значение In stock , значением по умолчанию для ключей в нашем словаре было бы None .
Преобразуем список в словарь при помощи генератора словаря
Для преобразования списка Python в словарь также можно использовать генератор словаря.
Генератор словаря похож на генератор списка в том, что оба они создают новое значение соответствующего типа данных.
Что касается синтаксиса, в генераторе словаря используются фигурные скобки <> , а в генераторе списка — квадратные [] .
Давайте преобразуем наш список фруктов в словарь, используя генератор словаря:
fruits = ["Apple", "Pear", "Peach", "Banana"] fruit_dictionary = print(fruit_dictionary)
Для начала мы объявили список фруктов ( fruits ), где хранятся их названия, которые мы хотим перенести в словарь.
Затем мы использовали генератор словаря, чтобы пройтись по каждому элементу в списке fruits . Для каждого фрукта в нашем списке мы добавили элемент в новый словарь. При этом каждому фрукту мы присвоили значение In stock.
Наконец, мы вывели наш новый словарь в консоль. Можем запустить наш код, и он выведет то же самое, что и в первом примере.
Конвертируем два списка в словарь при помощи zip()
В нашем последнем примере мы преобразовываем в словарь один список и присваиваем одинаковое значение по умолчанию для каждого ключа в словаре. Но можно преобразовать в словарь и два списка. Давайте попробуем это сделать.
Для этого мы можем использовать такую функцию Python, как zip(). Она позволяет объединить два списка. Элементы одного списка мы можем использовать в качестве ключей для словаря, а элементы второго — в качестве значений.
Итак, предположим, что у нас есть два списка: один содержит названия фруктов, а другой – их цены. Мы хотим создать единый словарь, в котором будет храниться название фрукта и его цена.
Для выполнения этой задачи мы можем использовать следующий код:
fruits = ["Apple", "Pear", "Peach", "Banana"] prices = [0.35, 0.40, 0.40, 0.28] fruit_dictionary = dict(zip(fruits, prices)) print(fruit_dictionary)
Запустим наш код и получим следующее:
Что же мы сделали? Во-первых, мы определили два списка: список фруктов fruits и список цен prices .
Затем мы использовали функцию zip() , чтобы объединить наши списки. Эта функция возвращает список кортежей. Поскольку нам нужен словарь, для преобразования наших кортежей мы использовали dict() .
В конце мы вывели содержимое нашего нового словаря в консоль.
Заключение
Итак, мы разобрали на примерах, как в Python получить словарь из списка или двух списков.
Чтобы преобразовать список в словарь, где у всех ключей будут одинаковые значения, можно использовать метод dict.fromkeys() .
Для создания словаря из двух списков стоит воспользоваться функцией zip() .
Генератор словаря позволяет создать новый словарь на основе значений списка.
Надеемся, теперь у вас всё разложилось по полочкам в данном вопросе!
Словари и методы в Python. Добавление списка в словарь
Словарь в Python — неупорядоченная структура данных, позволяющая хранить пары «ключ-значение». В этой статье вы узнаете, как выглядит словарь, какие используются методы при работе с ним, а также о том, как преобразовать список в словарь.
Словарь (dictionary) в Python используется наряду с кортежами и списками, похожие структуры есть и в других языках программирования (ассоциативный массив в PHP, словарь в C#).
Словарь, как и список, хранит коллекцию элементов. И каждый элемент в словаре, как было уже упомянуто, имеет уникальный ключ — с ним ассоциировано какое-либо значение.
Вот синтаксис словаря в Python:
dictionary =
А вот ещё пример словаря:
dictionary =
Вышописанный словарь использует в качестве ключей строки. Но ключом может быть и другой неизменяемый тип данных, а значением конкретного ключа — что угодно. Давайте посмотрим на словарь, где ключи — это числа, а значения — это строки:
gender_dict =
Примечание: если будете применять в качестве ключа изменяемый тип данных (правильнее сказать, нехэшируемый, хотя обычно это одно и то же), то на выходе будет ошибка:
dictionary =
Получаем данные из словаря
Чтобы получить значения конкретного ключа используют квадратные скобки [] . Представим, что у нас в словаре присутствует пара «марафон»: 26.
# берём значение с ключом «марафон» dictionary['марафон']
Но если вы захотите получить значение, используя не существующий ключ, будет ошибка. Чтобы избежать ошибок, применяют методы.
Как добавлять и обновлять ключи
Добавление в словарь новых пар выполняется просто:
# Добавляем ключ «туфля» со значением «род обуви, который закрывает ногу не выше щиколотки» dictionary['туфля'] = 'род обуви, который закрывает ногу не выше щиколотки'
Для обновления делаем то же самое:
# Обновляем ключ "туфля" и присваиваем ему значение "хорошая туфля" dictionary['туфля'] = 'хорошая туфля'
Как удалять ключи
Чтобы удалить ключ и соответствующее значение из словаря, используем del:
# Удаляем значение с ключом "противостоять" из словаря del dictionary['противостоять']
Методы
Cловари имеют много полезных методов, помогающих в работе. Рассмотрим наиболее популярные.
Update
Метод update() нужен при объявлении нескольких пар одновременно. В качестве аргумента метод принимает другой словарь:
# Добавляем две пары в словарь dictionary, используя метод update dictionary.update() >>> dictionary
Возможно, вы спросите, почему в словаре данные расположены в другом порядке, а не в том, в котором были в него внесены. Ответ прост — словари не упорядочены.
Get
# Представьте, что у нас есть словарь story_count story_count =
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
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) #
Таким же образом возможно преобразование в словарь не только списка, но и двухмерных кортежей:
users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict)Материал подготовлен специально для OTUS на основании статьи «Python Dictionary and Dictionary Methods».
Python. Создать словарь по списку ключей
Предположим, вы сделали робота для общественных пространств. Он будет помогать людям.
Вы решаете, что полезно собирать статистику добрых дел — что и сколько раз робот сделал. Для этого удобно использовать счётчик, ключами которого будут названия действий, а значениями — количество выполнений.
Робот постоянно учится новым полезным активностям, так что набор дел не фиксированный. Он хранится в списке:
actions = [ "махать флагом", "чесать котов", "смешить детей", "рвать шаблоны", ]
Как бы из этого списка сделать счётчик? Так не надо, конечно:
from collections import Counter counter = Counter() for action in actions: counter[action] = 0 >>> counter Counter( 'махать флагом': 0, 'чесать котов': 0, 'смешить детей': 0, 'рвать шаблоны': 0>)
Намного роднее воспользоваться dictionary comprehension (простите, что на англ — непереводимая игра слов):
counter = Counter(action: 0 for action in actions>)
Или малоизвестным методом dict.fromkeys() :
counter = Counter(dict.fromkeys(actions, 0))
Первый аргумент — список ключей, второй — умолчательное значение. Удобно, а?
Подписывайтесь на канал, чтобы не пропустить новые заметки