[python] 압축을 풀기에는 너무 많은 값이 있습니다. 키 => 문자열, 값 => 목록

나는 점점 오전 'too many values to unpack'오류입니다. 어떻게 해결할 수 있습니까?

first_names = ['foo', 'bar']
last_names = ['gravy', 'snowman']

fields = {
    'first_names': first_names,
    'last_name': last_names,
}        

for field, possible_values in fields:  # error happens on this line              



답변

파이썬 2

같은 것을 사용해야합니다 iteritems.

for field, possible_values in fields.iteritems():
    print field, possible_values

파이썬 버전에서을 사용하는 것과 같은 사전을 반복하는 방법에 대한 자세한 내용 은 이 답변 을 참조하십시오 items().

파이썬 3

파이썬 3 iteritems()더 이상 지원되지 않기 때문에 . items()대신 사용하십시오 .

for field, possible_values in fields.items():
    print(field, possible_values)


답변

Python 3.x의 경우 iteritems제거되었습니다. 대신 항목 을 사용하십시오 .

for field, possible_values in fields.items():
    print(field, possible_values)


답변

iteritems 를 사용하려고합니다 . 이것은 사전에 반복자를 반환하여 튜플 (키, 값)을 제공합니다

>>> for field, values in fields.iteritems():
...     print field, values
...
first_names ['foo', 'bar']
last_name ['gravy', 'snowman']

문제는 필드를 반복하여 사전의 키를 반환한다는 것입니다.

>>> for field in fields:
...     print field
...
first_names
last_name


답변

목록의 경우 enumerate

for field, possible_values in enumerate(fields):
    print(field, possible_values)

iteritems 목록 객체에는 작동하지 않습니다


답변

Python3 iteritems()에서는 더 이상 지원되지 않습니다

솔루션 1 :

사용하다 .items

for field, possible_values in fields.items():
    print(field, possible_values)

솔루션 2 :

당신은 사용할 수 있습니다 enumerate()뿐만 아니라

for field, possible_values in enumerate(fields):
    print(field, possible_values)


답변

사전에서 직접 반복 할 수 없습니다. 그래서 당신은 tuple로 변환을 통해 할 수 있습니다 .

first_names = ['foo', 'bar']
last_names = ['gravy', 'snowman']

fields = {
    'first_names': first_names,
    'last_name': last_names,
         }
tup_field=tuple(fields.items())
for names in fields.items():
     field,possible_values = names
     tup_possible_values=tuple(possible_values)
     for pvalue in tup_possible_values:
           print (field + "is" + pvalue)


답변

fields.iteritems()코드에서 누락되었습니다 .

사전의 키를 사용하여 값을 얻는 다른 방법으로도 할 수 있습니다.

for key in fields:
    value = fields[key]