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


323

나는 점점 오전 '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              

답변:


478

파이썬 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)

88
이 작업을 수행해야하는 이유에 대해 사전을 반복하면 키 / 값 쌍이 아닌 키를 반복합니다.
Jeff Mercado

1
@jeffm 그것이 저를 혼란스럽게합니다. 나는 이것을 PHP foreach로 보았다.
tipu

79

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

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

37

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

9

목록의 경우 enumerate

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

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


이것은 적어도 파이썬 2.7에 대한 정답 (테스트)이어야합니다.
Dung

1

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)

0

사전에서 직접 반복 할 수 없습니다. 그래서 당신은 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)

답을 설명하십시오.
Maciej Jureczko

사전에서 직접 반복 할 수 없습니다. 따라서 튜플로 변환을 통해 할 수 있습니다.
satya narayan pardhi

0

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

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

for key in fields:
    value = fields[key]

0
data = (['President','George','Bush','is','.'],['O','B-PERSON','I-PERSON','O','O'])
corpus = []
for(doc,tags) in data:
    doc_tag = []
    for word,tag in zip(doc,tags):
        doc_tag.append((word,tag))
        corpus.append(doc_tag)
        print(corpus)

4
스택 오버플로에 오신 것을 환영합니다! 일반적으로 코드의 목적과 다른 언어를 도입하지 않고 문제를 해결하는 이유에 대한 설명이 포함되어 있으면 답변이 훨씬 유용합니다.
Tim Diekmann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.