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


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.