Перейти к содержимому

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

  • автор:

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

Итак , у меня есть два списка 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] 

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

Есть два списка. Написать код, который создает словарь, в котором ключами являются элементы первого списка, а значениями — находящиеся в соответствующих позициях элементы второго списка.

a = [1, 2, 3, 4, 5] b = ['a', 'b', 'c', 'd', 'e'] c = <> # Количество итераций # не должно превышать длину # более короткого списка, # если списки разной длины. for i in range(len(a)): # Элемент под индексом 'i' # одного списка будет ключом. key = b[i] # Элемент под индексом 'i' # другого списка будет значением. value = a[i] # В словарь добавляется пара # ключ-значение. c[key] = value print(c)

Похожие записи:
  1. Django — доработка шаблона формы регистрации
  2. Товары с ценой и количеством
  3. Модуль Paginator
  4. Сериализаторы для связанных моделей

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

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

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно
Описаны как базовые функции, так и основные новинки Windows 10: улучшенный интерфейс системы и

Эта книга – исчерпывающее руководство по развертыванию и повседневному обслуживанию операционных систем Windows 7

С этой книгой вы научитесь моделированию удивительных по своей реалистичности существ, людей и неодушевленных

Приводимые в книге паттерны проектирования отражают лучшие практические подходы к решению типичных задач машинного

13 лет автор собирал базу ссылок, так необходимых для продвижения в интернете! Справочник содержит не 100, не 200 ссылок,

Эта книга поможет получить навыки самостоятельной разработки конфигурации и программирования прикладных приложений в среде

В этом руководстве рассказано, как продлить стремительно сокращающийся век компьютера, работающего под управлением Windows.

Серверные операционные системы семейства Windows Server 2003 сочетают в себе расширенные и улучшенные возможности

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 = не работает. Вы должны явно объявить dict(zip()) . Если вы заставите его работать, то вам придется использовать правильное понимание словаря.

Понимание словаря

Понимание словаря — это элегантный и лаконичный способ создания словарей. Мы можем использовать приведенный выше пример для создания словаря из двух списков.

Минимальный синтаксис для понимания словаря следующий.

dictionary =

См. следующий пример кода:

stocks = ['reliance', 'infosys', 'tcs'] prices = [2175, 1127, 2750] new_dict = print(new_dict) 

Словари

В языке программирования Python словари (тип dict ) представляют собой еще одну разновидность структур данных наряду со списками и кортежами. Словарь — это изменяемый (как список) неупорядоченный (в отличие от строк, списков и кортежей) набор элементов «ключ:значение».

«Неупорядоченный» – значит, что последовательность расположения пар не важна, в следствие чего обращение к элементам по индексам невозможно.

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

Чтобы представление о словаре стало более понятным, проведем аналогию с обычным словарем, например, англо-русским. На каждое английское слово в таком словаре есть русское слово-перевод: cat – кошка, dog – собака, table – стол и т. д. Если англо-русский словарь описать с помощью Python, то английские слова можно сделать ключами, а русские – их значениями:

{'cat': 'кошка', 'dog': 'собака', 'bird': 'птица'>

Обратите внимание, что для определения словаря используются фигурные скобки. Синтаксис словаря на Питоне описывается такой схемой:

В словаре доступ к значениям осуществляется не по индексам, а по ключам, которые заключаются в квадратные скобки (по аналогии с индексами списков):

>>> a['cat'] 'кошка' >>> a['bird'] 'птица'

Словари, как и списки, являются изменяемым типом данных: позволительно изменять, добавлять и удалять элементы (пары «ключ:значение»). Изначально словарь можно создать пустым (например, d = <> ) и потом заполнить его элементами. Добавление и изменение имеет одинаковый синтаксис: словарь[ключ] = значение . Ключ может быть как уже существующим (тогда происходит изменение значения), так и новым (происходит добавление элемента словаря). Удаление элемента осуществляется с помощью встроенной оператора del языка Python.

>>> a = <> >>> a[1] = 2.34 >>> a[2] = 4.88 >>> a >>> a[1] = 3.01 >>> a >>> del a[2] >>> a

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

Ключом может быть любой неизменяемый тип данных. Значением – любой тип данных. Значения словарей вполне могут быть структурами, например, другими словарями или списками.

>>> nums = >>> person1 = >>> person1['data'][0] 4

Перебор элементов словаря в цикле for

Элементы словаря перебираются в цикле for также, как элементы других сложных объектов. Однако «по-умолчанию» извлекаются только ключи:

>>> nums >>> for i in nums: . print(i) . 1 2 3

Но по ключам всегда можно получить значения:

>>> for i in nums: . print(nums[i]) . one two three

С другой стороны у словаря как класса есть метод items() , который создает особую структуру, состоящую из кортежей. Каждый кортеж включает ключ и значение:

>>> n = nums.items() >>> n dict_items([(1, 'one'), (2, 'two'), (3, 'three')])

В цикле for можно распаковывать кортежи, таким образом сразу извлекая как ключ, так и его значение:

>>> for key, value in nums.items(): . print(key, 'is', value) . 1 is one 2 is two 3 is three

Методы словаря keys() и values() позволяют получить отдельно перечни ключей и значений. Так что если, например, надо перебрать только значения или только ключи, лучше воспользоваться одним из этих методов:

>>> v_nums = [] >>> for v in nums.values(): . v_nums.append(v) . >>> v_nums ['one', 'two', 'three']

Методы словаря

Кроме рассмотренных выше трех методов items() , keys() и values() словари обладают еще восемью. Это методы clear() , copy() , fromkeys() , get() , pop() , popitem() , setdefault() , update() .

Метод clear() удаляет все элементы словаря, но не удаляет сам словарь. В итоге остается пустой словарь:

>>> nums >>> nums.clear() >>> nums <>

Словарь – это изменяемый тип данных. Следовательно, как и список он передается в функцию по ссылке. Поэтому иногда, чтобы избежать нежелательного изменения глобального словаря его копируют. Это делают и с другими целями.

>>> n1 = >>> n2 = n1 >>> n3 = n1.copy() >>> n2[‘c’] = 3 >>> n1 >>> n2 >>> n3

Метод fromkeys() позволяет создать словарь из списка, элементы которого становятся ключами. Применять метод можно как классу dict , так и к его объектам:

>>> a = [1, 2, 3] >>> c = dict.fromkeys(a) >>> c >>> d = dict.fromkeys(a, 10) >>> d

Метод get() позволяет получить элемент по его ключу:

>>> nums.get(1) 'one'

Метод pop() удаляет из словаря элемент по указанному ключу и возвращает значение удаленной пары. Метод popitem() не принимает аргумента, удаляет элемент по принципу «последним вошел, первым вышел» и возвращает его в программу в виде кортежа (ключ, значение) .

>>> nums = >>> nums.pop(1) ‘one’ >>> nums >>> nums.popitem() (3, ‘three’) >>> nums

С помощью setdefault() можно добавить элемент в словарь:

>>> nums.setdefault(4, ‘four’) ‘four’ >>> nums

Равносильно nums[4] = ‘four’ , если элемент с ключом 4 отсутствует в словаре. Если он уже есть, то nums[4] = ‘four’ перезапишет старое значение, setdefault() – нет.

С помощью update() можно добавить в словарь другой словарь:

>>> nums.update() >>> nums

Также метод обновляет значения существующих ключей. Включает еще ряд особенностей.

Практическая работа

  1. Создайте словарь, связав его с переменной school , и наполните данными, которые бы отражали количество учащихся в разных классах (1а, 1б, 2б, 6а, 7в и т. п.). Внесите изменения в словарь согласно следующему: а) в одном из классов изменилось количество учащихся, б) в школе появился новый класс, с) в школе был расформирован (удален) другой класс. Вычислите общее количество учащихся в школе.
  2. Напишите функцию, которая принимает один словарь, и возвращает другой, в котором ключами являются значения из первого словаря, а значениями – соответствующие им ключи. Создайте словарь, передайте его в функцию. Выведите на экран исходный и «перевернутый» словари.

Примеры решения и дополнительные уроки в pdf-версии курса

X Скрыть Наверх

Python. Введение в программирование

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

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