#python
Вопрос:
У меня есть эта ошибка, и я застрял здесь. Кто-нибудь может помочь, пожалуйста?
for row, is_corrupt in ([{'a': 'b'}], True):
print(row)
print(is_corrupt)
Я получаю ошибку :
ValueError: not enough values to unpack (expected 2, got 1)
PS:- Я получаю ([{'a': 'b'}], True)
метод генератора фрома.
Комментарии:
1. Каковы ваши ожидаемые значения для
row
каждой итерации иis_corrupt
для каждой итерации?2. Что именно вы пытаетесь сделать? Что означает {‘a’:’b’}?
3.
for ... in ...
уже выполняет итерацию по коллекции, в данном случае по самому внешнему кортежу. Затем он пытается уничтожить каждый элемент. Поэтому он сначала попытается разложиться[{'a': 'b'}]
на два элемента, а затемTrue
на два элемента. Это должно сделать неудачу очевидной. Если вы хотите просто деструктировать([{'a': 'b'}], True)
, вы можете просто отказаться от итерации и вместо этого использовать назначение:row, is_corrupt = ([{'a': 'b'}], True)
Ответ №1:
Вы повторяете кортеж из двух элементов:
[{'a': 'b'}]
True
Ни в том, ни в другом случае у вас нет двух элементов, которые можно распаковать в две переменные.
То, что вы, кажется, хотите сделать, это просто:
row, is_corrupt = ([{'a': 'b'}], True)
Комментарии:
1. Большое вам спасибо за объяснение
Ответ №2:
Это должно быть:
for row, is_corrupt in [([{'a': 'b'}], True)]:
print(row)
print(is_corrupt)
Комментарии:
1. Большое Вам спасибо