Превращение двух списков в словарную ошибку - PullRequest
0 голосов
/ 30 августа 2018

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

TypeError                                 Traceback (most recent call last)
<ipython-input-535-a88b451e7100> in <module>()
      1 #
      2 DN = {key: value for key, value in zip(NiW, NiV)}
----> 3 DY = {key: value for key, value in zip(YiW, YiV)}
      4 D = dict(DN, **DY)
TypeError: unhashable type: 'list'

Я провел некоторое исследование, похоже, что это внешний список вложенного списка, вызвавший эту ошибку, но я не уверен

Данные

YiW
[['africa', 'trip'],
['asia', 'travel'],
['europe', 'holiday']]

YiV
[[array([-0.34219775,  0.61445   ,  0.19807251],
array([ 1.8527551 ,  2.4294894 ,  0.3062766],
[array([-0.34219775,  0.61445   ,  0.19807251,  0.15776388],
array([ 1.8527551 ,  2.4294894 ,  0.3062766],
[array([-0.34219775,  0.61445   ,  0.19807251,  0.15776388],
array([ 1.8527551 ,  2.4294894 ,  0.3062766]]

Идея выхода:

{'africa':array([-0.34219775,  0.61445   ,  0.19807251],
'trip':array([-0.34219775,  0.61445   ,  0.19807251,  0.15776388]}etc..

Я пробовал много способов удалить внешний список: расплющить-лист-из-списков

конкатенация-вещь-в-список к строкам

как к обращенным вложенным-список-в-словарь-в-питон-где-lst00-это-ключ но они не работают в этом случае, кто-нибудь может помочь? Спасибо заранее!

1 Ответ

0 голосов
/ 30 августа 2018

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

DY = {key: value for keys, value in zip(YiW, YiV) for key in keys}

Обратите внимание, что данные будут сброшены, если какая-либо клавиша появится более одного раза (поэтому, если YiW содержит ["africa", "trip"] и более поздние ["asia", "trip"], вы только сопоставите "trip" со значением, которое связано с ["asia", "trip"] ). Если это не то, что вам нужно, вам нужно быть более конкретным в желаемом поведении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...