Как правильно создать словарь из двух списков с помощью itertools?
Есть два списка разной длины. В первом содержатся ключи, а во втором значения. Напишите функцию, которая создает из этих ключей и значений словарь. Если ключу не хватило значения, в словаре должно быть значение None. Значения, которым не хватило ключей, нужно игнорировать.
- Вопрос задан более трёх лет назад
- 1430 просмотров
1 комментарий
Оценить 1 комментарий
Как сделать словарь из двух списков?
Итак , у меня есть два списка 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
627 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 Zip: Как преобразовать список в словарь
Список и словарь относятся к числу надежных структур данных в Python. Преобразование друг из друга — самая частая задача, с которой вы когда-либо сталкивались при разработке Python. Вы часто обнаруживаете, что вам нужно создать словарь из двух разных, но тесно связанных последовательностей. Самый простой способ добиться этого — использовать вместе методы dict() и zip() .
Python Zip
Чтобы создать словарь из двух последовательностей, используйте методы dict() и zip(). В Python 3 метод zip() теперь возвращает ленивый итератор, который сейчас является наиболее часто используемым подходом.
Для dict(zip(ключи, значения)) требуется одноразовый глобальный поиск для dict и zip. Тем не менее, он не создает ненужных промежуточных структур данных и не занимается локальным поиском в приложении функций.
stocks = ['reliance', 'infosys', 'tcs'] prices = [2175, 1127, 2750] dictionary = dict(zip(stocks, prices)) print(dictionary)
В этом примере мы определили два списка, которые нам нужно преобразовать в словарь. Первый список элементов будет ключами для словаря, а второй список элементов будет словарем значений.
Метод zip(fields, values) возвращает итератор, который генерирует кортежи из двух элементов. Если вы вызываете dict() на этом итераторе, вы можете создать нужный вам словарь. Элементы первого списка становятся ключами словаря, а элементы второго списка представляют значения в словаре.
Важно отметить, что dictionary =
Понимание словаря
Понимание словаря — это элегантный и лаконичный способ создания словарей. Мы можем использовать приведенный выше пример для создания словаря из двух списков.
Минимальный синтаксис для понимания словаря следующий.
dictionary =
См. следующий пример кода:
stocks = ['reliance', 'infosys', 'tcs'] prices = [2175, 1127, 2750] new_dict = print(new_dict)
Python-сообщество
![]()
- Начало
- » Python для новичков
- » Словарь из двух списков
#1 Окт. 19, 2017 15:40:14
megafox Зарегистрирован: 2017-09-18 Сообщения: 10 Репутация: 0 Профиль Отправить e-mail
Словарь из двух списков
Доброе время.
Подскажите пожалуйста как создать словарь из двух списков.
Входные данные
bookname=
bookcount=
Должно получиться:
bookdic=