【问题标题】:ValueError: too many values to unpack, can't figure out whyValueError:要解压的值太多,无法弄清楚原因
【发布时间】:2016-03-30 13:45:40
【问题描述】:

我有一个函数:

def store(word, info_list):
    for a, b, c, in info_list:
        data = {}
        ...

我正在打电话:

store(x[0],x[1])

在哪里

x = (u'sergeev', (u'2015 afc asian cup group b', 
(u'2015 afc asian cup group b', u'sergeev', 372.57022256331544), 0.22388357256778307))

我的目标是:

a=u'2015 afc asian cup group b'
b=(u'2015 afc asian cup group b', u'sergeev', 372.57022256331544)
c=0.22388357256778307

但我得到了

in store
for a,b,c, in info_list:
ValueError: too many values to unpack

我找不到不匹配的地方...谁能帮帮我?

【问题讨论】:

  • 是的,主要原因是,如果您以这种方式分配 X,它将不是一个列表,您可以按照您的方式迭代,因为这将逐个迭代 3 个项目,而不是作为一组。试试x = (('2015... ', ' 2015... ', 0.22),) 看看有什么不同。

标签: python


【解决方案1】:

不要使用for 循环,只需解包元素。

def store(word, info_list):
    a, b, c = info_list

x[1](您传递给函数的值)基本上是一个 simple 元组。在这里只需解压这些值就足够了。

当你有一个元组的元组时,你可以使用for 循环。看看下面的例子:

>>> a = ((1, 2), (2, 3), (3, 4))
>>> for i, j in a:
...     print i, j  
1 2
2 3
3 4

【讨论】:

    【解决方案2】:

    我不需要循环,为什么不直接分配它:

    def store(word, info_list):
        a, b, c = info_list[0], info_list[1], info_list[2]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-20
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 2015-12-20
      相关资源
      最近更新 更多