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 3.12 генераторы словарей, списков и множеств теперь встроены, а не создают новый одноразовый функциональный объект для каждого выполнения. Это ускоряет выполнение таких генераторов до двух раз. Подробнее об изменениях в материале «Генератор списка list в Python».
Для создания словарей из произвольных ключей и значений можно использовать короткий синтаксис, который подробно описан в материале о генераторах списков.
>>> x: x**2 for x in (2, 4, 6)> # # словарь генерируется из 2-х списков >>> x: y for x, y in zip(['a', 'b', 'c'], [1, 2, 3])> #
Как и где можно применить генератор словарей.
При помощи генератора словаря можно создать словарь из списка с каким-то значением по умолчанию для значений ключей, тем самым воспроизвести метод dict.fromkeys() :
>>> keys = ['key1', 'key2', 'key3', 'key4', 'key5'] >>> def_val = 0 >>> key: def_val for key in keys> # # то же самое с использованием метода 'dict.fromkeys()' >>> d = <> >>> d.fromkeys(keys, def_val) #
При создании генераторов словарей следует помнить, что ключами key словаря могут быть только неизменяемые (хешируемые) объекты:
# неизменяемые кортежи могут быть ключами: >>> <(x, y): x + y for x, y in zip('123', 'abc')> # >>> # а изменяемые списки ключами быть не могут: >>> <[x, y]: x + y for x, y in zip('123', 'abc')> # Traceback (most recent call last): # File "", line 1, in # File "", line 1, in # TypeError: unhashable type: 'list'
Поменять местами ключ и значение в словаре.
Меняем местами ключ и значение в словаре, используя генератор словаря. При этом помним, что ключом может быть только неизменяемый объект.
>>> d = 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5> >>> y: x for x, y in d.items()> #
Фильтровать словарь по ключу и/или значению.
>>> d = 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5> # отберем элементы словаря, ключи которых имеют значения 'a' или # 'c' или 'e', а значения этих ключей должны быть больше 1 >>> key: val for key, val in d.items() if key in ('a', 'c', 'e') and val > 1> #
Удалить дубликаты словарей из списка с определенным одинаковым ключом.
Представим, что есть список словарей, в которых одно из значений используется в качестве идентификатора пользователя:
data = [ 'uuid': 0, 'nik': 'alex', 'years': 13>, 'uuid': 1, 'nik': 'fred', 'birthday': 15>, 'uuid': 1, 'nik': 'joy', 'birthday': 8>, 'uuid': 3, 'nik': 'lily', 'birthday': 5>, 'uuid': 4, 'nik': 'moo', 'birthday': 9>, 'uuid': 1, 'nik': 'jack', 'birthday': 10>, ]
Стоит задача — удалить дубликаты словарей, содержащие одинаковые значения определенного ключа. В данной ситуации будем удалять словари с одинаковым значение ключа uuid .
Это можно сделать то же при помощи генератора словаря.
>>> new_data = d['uuid']: d for d in data>.values() >>> list(new_data) # [ # , # , # , # # ]
В примере создается словарь, ключами которого являются полe, которое должно быть уникальным (без повторов), затем с помощью метода словаря dict.values() получили все значения из созданного словаря. Так как словарь не может содержать больше одной записи для каждого ключа, то полученный в итоге список словарей не содержит дубликатов, что и требовалось.
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Представления словарей dict.keys, dict.values и dict.items
- Исходный словарь для представления dictview.mapping
- Получение списка ключей словаря list(dict)
- Количество элементов в словаре len(dict)
- Доступ к значению словаря по ключу dict[key]
- Добавление/изменение значения словаря по ключу key
- Удаление значения словаря по ключу
- Проверка наличия/отсутствия ключа key в словаре dict
- Проверка наличия/отсутствия значения value в словаре Python
- Проверка наличия/отсутствия пары (key, value) в словаре dict
- Итерирование по ключам и значениям словаря Python
- Метод dict.clear(). Очистить словарь
- Метод dict.copy(), копия словаря
- Метод dict.fromkeys(), словарь с ключами по умолчанию
- Метод dict.get(), значение по умолчанию если ключа нет
- Метод dict.items(), список кортежей
- Метод dict.keys(), список ключей словаря
- Метод dict.values(), список значений словаря
- Метод dict.pop()
- Метод dict.popitem(), получить пару ключ/значение
- Метод dict.setdefault(), получает/вставляет значение ключа
- Метод dict.update(), обновление/дополнение словаря
- Объединение двух словарей в новый словарь Python
- Сортировка словаря по значению и/или ключу
- Обратный порядок/реверс словаря reversed(dict)
- Генератор словаря и его использование
- Фильтр словаря по ключам и/или значениям
- Словарь как фабрика функций
Создайте словарь из списка ключей и значений в Python
В этом посте мы обсудим, как создать словарь из списка ключей и значений в Python.
Например, keys = [‘A’, ‘B’, ‘C’] а также values = [1, 2, 3] должен привести к словарю .
1. Использование zip() с dict() функция
Самый простой и элегантный способ построить словарь из списка ключей и значений — использовать метод zip() функция с конструктором словаря.
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
values = [ 1 , 2 , 3 ]
dictionary = dict ( zip ( keys , values ) )
print ( dictionary ) #
2. Использование словарного понимания
Другой подход заключается в использовании zip() с пониманием словаря. Это часто полезно, когда вам нужны пары ключ-значение вместо пар ключ-значение или вы применяете некоторую функцию сопоставления к каждому ключу или значению. Это может быть реализовано как:
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
values = [ 1 , 2 , 3 ]
dictionary = < k : v for k , v in zip ( keys , values ) >
print ( dictionary ) #
Вот как выглядел бы код без zip() :
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
values = [ 1 , 2 , 3 ]
dictionary = < keys [ i ] : values [ i ] for i in range ( len ( keys ) ) >
print ( dictionary ) #
Если вам нужно создать новый словарь с ключами из iterable с тем же значением, вы можете сделать следующее.
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
dictionary = < key : value for key in keys >
print ( dictionary ) #
В качестве альтернативы вы можете использовать fromkeys() функция класса:
if __name__ == ‘__main__’ :
keys = [ ‘A’ , ‘B’ , ‘C’ ]
dictionary = dict . fromkeys ( keys , value )
print ( dictionary ) #
Это все о создании словаря из списка ключей и значений в Python.
Оценить этот пост
Средний рейтинг 4.96 /5. Подсчет голосов: 26
Голосов пока нет! Будьте первым, кто оценит этот пост.
Сожалеем, что этот пост не оказался для вас полезным!
Расскажите, как мы можем улучшить этот пост?
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
Подписывайся
3 Комментарии
Большинство голосов
Новейшие Самый старый
Встроенные отзывы
Просмотреть все комментарии
Просмотр комментариев
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации
- Все проблемы
- Практика DSA
- 100 самых популярных задач
- 50 лучших классических задач
- Лучшие алгоритмы
- Компилятор С/С++
- Компилятор Java
- Компилятор Python
- Компилятор JavaScript
- компилятор PHP
- Компилятор C#
- Свяжитесь с нами
- Политика конфиденциальности
- условия обслуживания
- Подпишитесь на новые публикации
Techie Delight © 2023 Все права защищены.
Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно
Python, как из списка сделать словарь
Как из списка типа [‘a’, ‘s’, ‘d’, ‘1’, ‘s’, ‘d’, ‘w’, ‘e’, ‘q’] сделать словарь такого вида: <'a': 2, 'b': 0 . >, то есть сколько раз повторяется элемент в списке — такое число добавить в словарь. Примечания: словарь можно НЕ строить из элементов что в списке, можно взять готовый скелет, пример:'a':>
но если лучше или легче из элементов, которые в списке — пожалуйста. UPDATE [‘a’, ‘s’, ‘d’, ‘1’, ‘s’, ‘d’, ‘w’, ‘e’, ‘q’] — это не пример данных) Тут список может быть и следующий: [‘=’, ‘w’, ‘r’, ‘p’, ‘f’, ‘;’, ‘a’, ‘e’, ‘e’, ‘[‘, ‘w’, ‘q’, ‘r’, «‘», ‘q’, ‘r’, ‘3’, ‘caps lock’, ‘;’, ‘D’, ‘A’, ‘S’, ‘D’, ‘shift’, ‘alt’, ‘ctrl’, ‘F’, ‘.’, ‘C’, ‘R’, ‘]’, ‘Q’, ‘=’, ‘3’, ‘1’, ‘2’, ‘3’, ‘F’, ‘A’, ‘S’, ‘R’, ‘ctrl’, ‘C’] Это обычный ввод с клавиатуры и мне нужно как раз сложить это в словарь и отправить в базу данных.
