Как создать словарь из двух списков python
Перейти к содержимому

Как создать словарь из двух списков python

  • автор:

Как сделать словарь из двух списков?

Итак , у меня есть два списка uniq и fifa(по длине одинаковы). Мне нужно , чтобы каждому элементу списка uniq был наследован каждый элемент списка uniq. p.s. к глубочайшему сожалению , я не могу придумать , как сделать данную конструкцию без костылей

Отслеживать
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
задан 24 фев 2018 в 12:45
Sahar Vkusni Sahar Vkusni
485 2 2 золотых знака 8 8 серебряных знаков 25 25 бронзовых знаков
Вы хотите чтобы каждому значению из списка uniq соответствовало значение из списка fifa?
24 фев 2018 в 13:23
да (я пишу этот текст в скобочках , чтобы обойти правила в стаке)
24 фев 2018 в 13:25
какое отношение pandas к вопросу имеет?
26 фев 2018 в 10:46

дал понять людям , что манипуляции с данным либом тут актуальны и могут быть использованы мной в коде

26 фев 2018 в 12:13

Чтобы подробнее разобраться в этой теме, рекомендую обратиться к этой статье. Здесь всё поэтапно написано и про другие темы в сфере программирования. sibsisadmin.ru/kak-sdelat-slovar-iz-dvuh-spiskov-v-python

27 сен 2021 в 12:47

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

uniq = [1,2,3,4,5] fifa = ['a','b','c','d','e'] uniq_and_fifa = dict(zip(uniq, fifa)) 

Отслеживать
ответ дан 24 фев 2018 в 13:26
617 5 5 серебряных знаков 17 17 бронзовых знаков
спасибо , я думал , что zip перемножает
24 фев 2018 в 13:29

Zip склеивает объекты на каждой итерации, в результате чего получается zip-объект, который можно переобразить в какой-то массив с помощью соответсвующих методов dict, list и так далее.

24 фев 2018 в 13:42

@SaharVkusni: zip от слова zipper (застёжка-молния) — сшивает половинки: первый элемент это объединение первых элементов аргументов: print(*next(zip(‘abc’, ‘ABC’))) -> a A

26 фев 2018 в 10:45

Судя по описанию задачи и метке Pandas вам нужен Pandas.Series:

In [48]: uniq = np.arange(1, 11) In [49]: fifa = np.random.choice(list('abcdefgh'), 10) In [50]: s = pd.Series(fifa, index=uniq) In [51]: s Out[51]: 1 b 2 c 3 b 4 d 5 f 6 e 7 a 8 a 9 c 10 h dtype: object 

Отслеживать
ответ дан 24 фев 2018 в 15:38
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака

Для того, чтобы из двух списков сделать словарь, надо перебрать в цикле все индексы любого из списков (ведь длина списков одинакова):

for i in range(0, len(uniq)): #тело цикла 

Теперь в теле цикла можно обратиться к элементам с одинаковыми индексами: uniq[i] и fifa[i] — это ключ и значение элемента словаря, который нужно создать. Создать новый элемент словаря можно так: uniq_and_fifa[ключ] = значение . Объявляем пустой словарь и дописываем цикл for :

uniq_and_fifa = <> for i in range(0, len(uniq)): uniq_and_fifa[uniq[i]] = fifa[i] 

Как сделать словарь из двух списков в Python

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

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

Как собрать словарь из двух списков

И так допустим есть какие то списки, например.

names = [‘Аня’, ‘Коля’, ‘Лёша’, ‘Лена’, ‘Миша’]
cities = [‘Владивосток’, ‘Красноярск’, ‘Москва’, ‘Обнинск’, ‘Чебоксары’]

Для того чтобы собрать словарь нужно воспользоваться функциями len и range в цикле for.

friends = <>
for i in range (len(friends_names)):
friends[names[i]] = cities [i]

То получим словарь.

Давайте немного разберем то что мы сделали, с помощью range мы задали последовательность чисел, с аргументом len(names). Функция len(names) посчитала и вернула нам количество элементов в списке

Мы увидим количество элементов в списке.

Далее мы просто сопоставили элементы двух списков friends[names[i]] = cities [i].

Самое главное чтобы элементы в списках соответствовал друг другу и их было одинаковое количество.

Раздел: Python Метки: Словарь из двух списков в Python

Словарь из двух списков : 2 комментария

  1. Виктор 08.08.2022 Код не работает.
    names = [‘Аня’, ‘Коля’, ‘Лёша’, ‘Лена’, ‘Миша’]
    cities = [‘Владивосток’, ‘Красноярск’, ‘Москва’, ‘Обнинск’, ‘Чебоксары’]
    friends = <>
    for i in range (len(friends_names)):
    friends[names[i]] = cities [i]
    Выдает ошибку
    File «», line 5
    friends[names[i]] = cities [i]
    ^
    IndentationError: expected an indented block

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 очень часто возникает потребность в создании словаря из отдельных списков ключей и значений. Возьмем для примера два списка: один со списком стран, а другой — с их столицами.

countries = ['Россия', 'США', 'Франция'] capitals = ['Москва', 'Вашингтон', 'Париж']

Задача — создать словарь, где страны будут ключами, а столицы — соответствующими значениями.

Для решения этой задачи в Python существует несколько подходов.

Использование функции zip()

Один из наиболее простых и эффективных способов — использование встроенной функции zip() , которая возвращает итератор кортежей, где первый элемент в каждом происходит из первого передаваемого аргумента, второй — из второго и так далее. Затем итератор можно преобразовать в словарь с помощью функции dict() .

countries = ['Россия', 'США', 'Франция'] capitals = ['Москва', 'Вашингтон', 'Париж'] dictionary = dict(zip(countries, capitals))

В результате получаем требуемый словарь:

Использование цикла for

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

countries = ['Россия', 'США', 'Франция'] capitals = ['Москва', 'Вашингтон', 'Париж'] dictionary = <> for i in range(len(countries)): dictionary[countries[i]] = capitals[i]

В результате также получаем требуемый словарь:

Выбор подхода зависит от конкретной задачи и предпочтений программиста. Оба метода позволяют быстро и просто решить поставленную задачу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *