В Python вы можете преобразовать список в словарь, используя dictionary comprehension (генераторы словарей), dict.fromkeys()
или метод zip()
. Все эти три метода создают новый словарь. Они не изменяют существующий список.
Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python.
Списки и словари в Python – это две структуры, используемые для хранения данных. Но что, если нам нужно преобразовать список в словарь? Вам это может понадобиться, если вы захотите присвоить уникальную метку каждому сохраненному вами значению. А это возможно только в словаре.
В Python есть несколько способов преобразовать список в словарь и несколько встроенных функций, которые можно использовать с этой целью. В этой статье мы рассмотрим все эти преобразования на примерах.
Списки и словари в Python
Списки и словари являются примерами коллекций Python. С их помощью мы можем хранить несколько (или даже много) похожих значений вместе, в одной структуре данных.
Список позволяет хранить данные в определенном порядке. Вот пример списка в Python:
takeout_prices = [2.50, 2.75, 4.50, 5.00]
Наш список takeout_prices
содержит четыре значения.
А словари, в отличие от списков, не упорядочены.
Вот пример словаря в Python:
takeout_prices = { 'single_chips': 2.50, 'large_chips': 2.75, 'single_fish': 4.50, 'large_fish': 5.00 }
Словари полезны, если вы хотите связать каждое значение с какой-нибудь меткой — ключом. А если вы храните похожие значения, например, цены или имена, которым не можете назначить уникальные ключи, лучше использовать списки.
Преобразование списка в словарь
Преобразовать список в словарь можно при помощи метода 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)
Наш код возвращает объекты из этого списка в виде словаря:
{'Apple': 'In stock', 'Pear': 'In stock', 'Peach': 'In stock', 'Banana': 'In stock'}
Сначала мы объявляем переменную под именем fruits
. В ней хранятся имена ключей, которые мы хотим использовать в нашем словаре.
Затем мы используем метод dict.fromkeys()
для создания словаря с ключами, которые мы сохранили в списке fruits
. Этот метод присваивает каждому ключу значение In stock
.
Наконец, мы выводим получившийся словарь в консоль.
Если бы мы не указали в нашем коде значение In stock
, значением по умолчанию для ключей в нашем словаре было бы None
.
Преобразуем список в словарь при помощи генератора словаря
Для преобразования списка Python в словарь также можно использовать генератор словаря.
Генератор словаря похож на генератор списка в том, что оба они создают новое значение соответствующего типа данных.
Что касается синтаксиса, в генераторе словаря используются фигурные скобки {}
, а в генераторе списка — квадратные []
.
Давайте преобразуем наш список фруктов в словарь, используя генератор словаря:
fruits = ["Apple", "Pear", "Peach", "Banana"] fruit_dictionary = {fruit : "In stock" for fruit in fruits} 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)
Запустим наш код и получим следующее:
{'Apple': 0.35, 'Pear': 0.4, 'Peach': 0.4, 'Banana': 0.28}
Что же мы сделали? Во-первых, мы определили два списка: список фруктов fruits
и список цен prices
.
Затем мы использовали функцию zip()
, чтобы объединить наши списки. Эта функция возвращает список кортежей. Поскольку нам нужен словарь, для преобразования наших кортежей мы использовали dict()
.
В конце мы вывели содержимое нашего нового словаря в консоль.
Заключение
Итак, мы разобрали на примерах, как в Python получить словарь из списка или двух списков.
Чтобы преобразовать список в словарь, где у всех ключей будут одинаковые значения, можно использовать метод dict.fromkeys()
.
Для создания словаря из двух списков стоит воспользоваться функцией zip()
.
Генератор словаря позволяет создать новый словарь на основе значений списка.
Надеемся, теперь у вас всё разложилось по полочкам в данном вопросе!
Перевод статьи «Python Convert List to Dictionary: A Complete Guide».