DevGang
Авторизоваться

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)

Результат:

{'reliance': 2175, 'infosys': 1127, 'tcs': 2750}

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

Метод zip(fields, values) возвращает итератор, который генерирует кортежи из двух элементов. Если вы вызываете dict() на этом итераторе, вы можете создать нужный вам словарь. Элементы первого списка становятся ключами словаря, а элементы второго списка  представляют значения в словаре.

Важно отметить, что dictionary = {zip(keys, values)} не работает. Вы должны явно объявить dict(zip()). Если вы заставите его работать, то вам придется использовать правильное понимание словаря.

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

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

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

dictionary = {key: value for vars in iterable}

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

stocks = ['reliance', 'infosys', 'tcs']
prices = [2175, 1127, 2750]

new_dict = {stocks: prices for stocks, prices in zip(stocks, prices)}
print(new_dict)

Результат:

{'reliance': 2175, 'infosys': 1127, 'tcs': 2750}

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

Поделитесь своим опытом, расскажите о новом инструменте, библиотеке или фреймворке. Для этого не обязательно становится постоянным автором.

Попробовать

Оплатив хостинг 25$ в подарок вы получите 100$ на счет

Получить