2013-07-02 4 views
4

다른 답변을 살펴 봤지만 두 가지 다른 값을 사용하는 것처럼 보입니다."너무 많은 값을 풀기"값 오류 얻기

코드 :

user = ['X', 'Y', 'Z'] 
info = [['a','b','c',], ['d','e','f'], ['g','h','i']] 

for u, g in user, range(len(user)): 
    print '|',u,'|',info[g][0],'|',info[g][1],'|',info[g][2],'| \n' 

그러니까 기본적으로, 그것은 출력이 필요 :

'| X | a | b | c |' 
'| Y | d | e | f |' 
'| z | g | h | i |' 

하지만 그 대신, 나는이 오류 얻을 : 내가 아는 한

Traceback (most recent call last): 
    File "<pyshell#19>", line 1, in <module> 
    for u, g in user, range(len(user)): 
ValueError: too many values to unpack 

을 사용자와 범위 (len (user))는 동일한 값입니다.

for u,g in (user, range(len(user))): 

즉 튜플 :

+3

다음과 같이 목록과 색인을 실제로 작성하려면 'for g, u in enumerate (user) :'를 시도하십시오. 그러나 다른 사람들이 말했듯이,이 경우에는 ** 색인을 원하지 않고 ** 우편 번호를 원합니다. –

답변

14
for u,g in user, range(len(user)): 

실제로 동일하다. 먼저 user 목록을 반환 한 다음 range을 반환합니다. user에있는 항목의 수는 3이고 LHS에는 두 개의 변수 (u, b) 만 있으므로이 오류가 발생합니다.

>>> u,g = user 
Traceback (most recent call last): 
    File "<ipython-input-162-022ea4a14c62>", line 1, in <module> 
    u,g = user 
ValueError: too many values to unpack 

당신은 (대신 수동 연결의 서식 및 사용 문자열) 여기 zip 찾고 :

>>> user = ['X', 'Y', 'Z'] 
>>> info = [['a','b','c',], ['d','e','f'], ['g','h','i']] 
for u, g in zip(user, info): 
    print "| {} | {} |".format(u," | ".join(g)) 
...  
| X | a | b | c | 
| Y | d | e | f | 
| Z | g | h | i | 
+2

우편 번호, 우편 번호, 우편 번호! 고마워요. – user2374668

+1

그 추악한'범위 (len (user))'를 사용하지 않는 +1! –

2
for u in user: 
    print '|',u,'|',info[user.index(u)][0],'|',info[user.index(u)][1],'|',info[user.index(u)][2],'| \n' 
1
>>> g = 0 
>>> for u in user: 
...  print '|',u,'|',info[g][0],'|',info[g][1],'|',info[g][2],'| \n' 
...  g=g+1 
... 
| X | a | b | c | 

| Y | d | e | f | 

| Z | g | h | i | 
0

다음 코드도 작동합니다

>>> for i in zip(user,info): 

    print i[0],'|', 

    for x in i[1]: 

     print x,'|', 

    print 

그리고 출력을 얻습니다 :

X | a | b | c | 
Y | d | e | f | 
Z | g | h | i | 

추신 : 몇 가지 해답이 있다는 것을 알고 있습니다. 그러나 나는 이것이 결과를 얻는 방법이기도하고 내가 그것을 추가 한 이유라고 생각했습니다!

관련 문제