获取“解压缩的值太多”值错误

时间:2013-07-02 13:56:57

标签: python

我看了其他答案,但看起来他们使用了2个不同的值。

代码:

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(用户))具有相同的价值。

4 个答案:

答案 0 :(得分:14)

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

实际上相当于:

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

即一个元组。它首先返回user列表,然后返回range。由于user中的项目数量为3,而LHS中您只有两个变量(ub),因此您将收到该错误

>>> 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 |

答案 1 :(得分:2)

for u in user:
    print '|',u,'|',info[user.index(u)][0],'|',info[user.index(u)][1],'|',info[user.index(u)][2],'| \n'

答案 2 :(得分: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 | 

答案 3 :(得分: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 |

P.S。:我知道有几个答案,但我只是认为这也是一种获得结果的方法,这就是我添加它的原因!