Как конвертировать 2 списка в python dict? - PullRequest
0 голосов
/ 22 марта 2020

Когда я создаю zip 2 список для создания python dict, только ak, v является возвращаемым, но мои 2 списка имеют длину = 5.

мои списки выглядят так:

Date_List = ['2019-11-04', '2019-11-04', '2019-11-04', '2019-11-04', '2019-11-04']
Gains_List = [0.0, -0.16873767942313656, 0.7362161773647236, -0.13807995856330857, 0.2844974266425382]

Длина обоих одинакова, поэтому я пытаюсь создать дикт, используя его понимание:

accumulated = {k: v for k, v in zip(new_data_list, ganhos)}

Но, когда я печатаю накопленный результат, возвращается только одно значение, например:

{'2019-11-04': 0.2844974266425382}

Еще одна вещь, которая случается, это то, что у даты '2019-11-04' есть значения 0,00 , но когда я делаю zip, dict получает последнее значение в Gains_List и помещает в как первое значение в dict.

Результат должен выглядеть следующим образом:

{2019-11-04: 0.000000, 2019-11-05: -0.168738, 2019-11-06: 0.736216, 2019-11-07: -0.138080, 2019-11-08: 0.284497}

Ответы [ 2 ]

0 голосов
/ 22 марта 2020

Ваш код действительно хорош! Он делает именно то, что вы ожидаете. Однако, как вы наверняка знаете, словари Python имеют формат {key: value}, где каждый ключ уникален . Вот где это пошло не так. Все значения в Date_List равны '2019-11-04', и, поскольку вы используете это в качестве ключа для словаря, понимание продолжает итеративно изменять значение ключа '2019-11-04' с 0.0 (первый элемент Gains_List) на 0.2844974266425382 (последний элемент Gains_List).

Если вы настаиваете на том, чтобы ключи были одинаковыми, вы можете превратить его в массив кортежей или словарь с ключом и всеми значениями от Gains_List в качестве значения.

0 голосов
/ 22 марта 2020

Причина этого в том, что во время итерации результата команды zip вы обновляете полученный словарь, а не расширяете его.

Команда zip приводит к массиву кортежей:

[('2019-11-04', 0.0), ('2019-11-04', -0.16873767942313656), ...]

Затем вы хотите создать словарь из каждого кортежа (ключ, значение). Но ключ всегда один и тот же, поэтому Python обновляет существующий ключ вместо расширения словаря, поскольку каждый ключ должен быть уникальным.

...