Ошибка получения: «недостаточно значений для распаковки» при возврате двух выходных данных с использованием понимания списка с помощью Python - PullRequest
0 голосов
/ 01 августа 2020

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

Циклы for выглядят следующим образом

[(paper_href_scopus.append(litag['href']), paper_title.append(litag.text)) \
   for litag in all_td.find_all('a', {'class': 'ddmDocTitle'})]

Изменение понимания списка, как показано ниже:

paper_href_scopus, paper_title = [(litag['href'], litag.text) \
    for litag in all_td.find_all('a', {'class': 'ddmDocTitle'})]

, что приводит к ошибке:

ValueError: недостаточно значений для распаковки (ожидается 2, получено 1)

Могу я узнать, как можно избежать такой ошибки?

1 Ответ

2 голосов
/ 01 августа 2020

Вы можете просто использовать zip как,

>>> paper_href_scopus, paper_title = zip(*[(litag['href'], litag.text) for litag in all_td.find_all('a', {'class': 'ddmDocTitle'})])

Кроме того, нет необходимости создавать list внутри, вы можете использовать genexpr, но я не думаю, что это будет иметь значение Вот. Тем не менее:

>>> paper_href_scopus, paper_title = zip(*((litag['href'], litag.text) for litag in all_td.find_all('a', {'class': 'ddmDocTitle'})))

Примечание:

Как предлагает balandongiv , здесь ссылка на genexpr использование и еще ссылка на официальные документы

...