Рубрики
Без рубрики

Список для Dict – преобразовать список в словаре в Python

Это очень распространенный вопрос и ответ: это зависит. Это зависит от данных в списке и как вы хотите, чтобы он был представлен в словаре. В этой статье мы проводим шесть разных способов преобразования списка в словарь. Вы также можете наблюдать за моим продвинутым видео онлайн-лайнера, где мы … Список для Dict – преобразовать список в словаре в Python Подробнее »

Автор оригинала: Lukas.

Это очень распространенный вопрос и ответ: это зависит. Это зависит от данных в списке и как вы хотите, чтобы он был представлен в словаре.

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

1. Преобразование списка примитивных типов данных, чтобы определиться с использованием индексов в качестве клавиш

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

Пример В качестве примера возьмите этот список:

snakes = ['Anaconda', 'Python', 'Cobra', 'Boa', 'Lora' ]

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

  • Ключ является индексом каждого элемента в списке змеи.
  • Значение представляет собой строковый элемент из списка.

Так что в конце концов, словарь должен выглядеть так:

d = {0: 'Anaconda', 1: 'Python', 2: 'Cobra', 3: 'Bora', 4: 'Lora'}

Идея решения : Возьмите понимание словаря и используйте функцию перечисления для генерации пар ключа.

Теперь посмотрим, как вы можете реализовать логику для достижения этого?

  • Во-первых, создайте пустой словарь.
  • Во-вторых, цикла по спискому змею и добавьте записи клавишных значений в пустой словарь.
  • Чтобы генерировать пары клавишных значений, используйте встроенный Python Function перечислять () Отказ Эта функция принимает намерение и возвращает кортеж для каждого элемента в Iterable. В этих кортежах первая запись – это индекс элемента, а вторая запись – это сам элемент. Например: Перечислять ('abc') даст вам перечисленный объект, содержащий значения (0, 'A'), (1, 'B'), (2, 'C') Отказ

Код : А вот код.

# list to convert
snakes = ['Anaconda', 'Python', 'Cobra', 'Boa', 'Lora' ]

# Short hand constructor of the dict class
d = {}

for index, value in enumerate(snakes):
    d[index] = value

И это все, что вам нужно, словарь D Содержит только записи, которые вы хотели иметь.

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

# list to convert
snakes = ['Anaconda', 'Python', 'Cobra', 'Boa', 'Lora' ]

# dictionary comprehension
d = {index: value for index, value in enumerate(snakes)}

Попробуй сам:

Итак, еще раз, встроенная функция Python перечисляет проблему, остальные просты.

2. Конвертировать список кортежей ключей, чтобы определить

Проблема : Как преобразовать список кортежей в словарь в Python с использованием первых ценностей кортежей в качестве словарных клавиш и второе значения кортежа в качестве значений словаря.

Пример : Мы принимаем список кортежей цвета змеи, в качестве примера.

snake_colors = [('Anaconda', 'green'), ('Python', 'green'), ('Cobra', 'red'), ('Boa', 'light-green'), ('Lora', 'green-brown')]

Решение : На самом деле эта проблема еще проще решать как первую, потому что работа перечисления функций уже сделана, все, что нам нужно сделать, это добавить записи в словарь.

Такой список можно сопоставить на словарь, просто позвонив Dict () Конструктор с этим списком в качестве аргумента. Таким образом, весь код будет такой же простой, как это:

d = dict(snake_colors)

3. Преобразовать два списка на один дикт

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

 key = lst1[i], value = lst2[i]

Опять же, Python приносит все функции, которые вам нужны в виде встроенных функций. Предположим, что ваши списки выглядят так:

snakes = ['Anaconda', 'Python', 'Cobra', 'Boa', 'Lora']
colors = ['green', 'green', 'red', 'light-green', 'green-brown']

Чтобы преобразовать эти два списка в тот же словарь, что и в предыдущем абзаце, нам нужна встроенная функция ZIP (). Требуется два или более повторных в качестве аргументов и создает от них кортежи.

Кортежи выглядят так: (Iterable1 [I], Iterable2 [I], ..., IterableN [I])

С помощью следующей строки кода мы получим список кортежей на ключ:

snakes = ['Anaconda', 'Python', 'Cobra', 'Boa', 'Lora']
colors = ['green', 'green', 'red', 'light-green', 'green-brown']

tuples = list(zip(snakes, colors))

Мы уже видели в разделе 2, как мы можем преобразовать список кортежей в словарь. Теперь Python очень мощный и не требует преобразования в список, прежде чем мы сможем преобразовать список кортежей в словарь, вместо этого мы можем пройти результат ZIP (змеи, цвета) непосредственно к конструктору Dict.

Последний код выглядит так:

snakes = ['Anaconda', 'Python', 'Cobra', 'Boa', 'Lora']
colors = ['green', 'green', 'red', 'light-green', 'green-brown']

d = dict(zip(snakes, colors))

4. Преобразовать список переменных клавиш, стоимость записей в Dict

Идея : Используйте Slicing, чтобы получить два отдельных списка, один с ключами, одним со значениями. Закрепите их вместе и создайте словарь, передавая ZIP-результат к Dict () конструктор.

Чтобы сделать его более визуальным, давайте возьмем в качестве примера следующий список названий города и Zip-коды (больше нет змей;)):

city_zip = ['Berlin', 10178, 'Stuttgart', 70591, 'München', 80331, 'Hamburg', 20251]

Из этого списка мы хотим создать словарь, где названия города являются ключами, а их Zip-коды являются значениями.

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

Как вы знаете (если не обновлять его здесь ) Мы можем установить начальное значение, конечное значение и значение шага для нарезки нарезки. Так с City_zip [:: 2] Мы получаем все названия города и с City_zip [1:: 2] Мы получаем почтовый индекс. Положить все вместе, мы получаем этот код:

city_zip = ['Berlin', 10178, 'Stuttgart', 70591, 'München', 80331, 'Hamburg', 20251]
city = city_zip[::2]
zip_code = city_zip[1::2]

d = dict(zip(city, zip_code))

5. Преобразовать список словарей в одно дикт

Идея : Используйте словарь, распакованный в петле. Метод Обновление () класса Dict добавляет данные в существующий словарь.

Давайте представим следующее применение: транспортное средство отправляет постоянный поток данных телеметрии как словари. Чтобы уменьшить задержку, словари содержат только обновления. Чтобы получить последнее общее состояние транспортного средства, мы хотим объединить все эти словари в один. Как вы, возможно, уже догадались, Python делает его очень легко. Вот код:

state_0 = {'coord_x': 5.123, 'coord_y': 4.012, 'speed': 0, 'fuel': 0.99}
state_1 = {'coord_x': 5.573, 'speed': 10, 'fuel': 0.83}
state_2 = {'coord_x': 6.923, 'speed': 25, 'fuel': 0.75}
state_3 = {'coord_x': 7.853, 'coord_y': 4.553, 'fuel': 0.68}
state_4 = {'coord_x': 10.23, 'speed': 50, 'fuel': 0.61}

d = dict(state_0)
data_stream = [state_0, state_1, state_2, state_3, state_4]

for state in data_stream:
    # updates only the changed entries in the dict
    d.update(**state)

После обработки потока данных наш словарь D содержит текущее состояние транспортного средства.

6. Преобразовать список в словарные ключи в Python

Идея : Инициализируйте словарь с конструктором Dict. Как проходит аргумент в результате Zaipping вместе список ключей с Генератор который постоянно возвращается значение по умолчанию.

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

С встроенной функцией Python на молнии мы можем застегивать два списка и пройти результат zip в конструктор Dict. Поскольку у нас есть только один список ключей, нам нужно как-то создать список значений по умолчанию одной и той же длины. Я выбрал выражение генератора для этого. Он возвращает значение по умолчанию 0 для каждого элемента в списке плееров. Теперь мы можем бросить список игроков и выражение генератора в функцию ZIP и пройти результат к конструктору Dict – вот и все!

players = ['Alice', 'Bob', 'Cloe', 'Dain']

default_value_gen = (0 for x in range(len(players)))
d = dict(zip(players, default_value_gen))

Заключение

Как мы видели в этой статье, Python имеет мощные встроенные функции, которые позволяют очень легко преобразовать данные из любого данного формата в словарь. Чтобы подготовить себе к новой проблеме преобразования-преобразования в словаре, я рекомендую вам прочитать нашу статью о словарях.

Знание словарей, и их методы хорошо, это база для используя их власть при любых обстоятельствах.

Куда пойти отсюда?

Хотите начать зарабатывать на полный рабочий день с Python – пока работаю только неполный рабочий день? Затем присоединяйтесь к нашему бесплатным Python Freelancer Webinar Отказ

Он точно показывает, как вы можете вырастить свой бизнес и навыки Python в точку, где вы можете работать комфортно на 3-4 часа от дома и наслаждаться остальными часами), проводить время с людьми, которых вы любите делать вещи, которые вам нравится делать Отказ

Стать питоном фрилансером сейчас!