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

#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. Большое Вам спасибо