python3: архивировать значения словаря - PullRequest
2 голосов
/ 20 апреля 2020

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

j={'front': [3, 103, 173], 'back': [69, 139, 209]}

, который в итоге получит список кортежей, подобный этому:

[(3, 69), (103, 139), ...]

Когда я пытаюсь Делая это, я получаю список списков после преобразования результата j.values ​​() в список. Затем я пытаюсь сжать это, и получаю неправильный результат.

>>> j={'front': [3, 103, 173], 'back': [69, 139, 209]}
>>> j.values()
dict_values([[3, 103, 173], [69, 139, 209]])
>>> list(zip(j.values()))
[([3, 103, 173],), ([69, 139, 209],)]

Почему я не получаю то, что ожидаю, и как это исправить?

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

вы можете использовать:

list(zip(*j.values()))

вывод:

[(3, 69), (103, 139), (173, 209)]
1 голос
/ 20 апреля 2020

Вам нужно добавить * к вашему .values() вызову для распаковки в zip.

>>> [tuple(i) for i in zip(*j.values())]
[(3, 69), (103, 139), (173, 209)]

, что более кратко просто

>>> list(zip(*j.values()))
[(3, 69), (103, 139), (173, 209)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...