解包的价值太多了......但没有

时间:2016-12-01 18:38:20

标签: python dictionary

所以url是一个字典,我正在迭代它的键。然后对于每个键,我试图解压缩该字典中的值。

for key in url:
    print len(url[key])
    for val, date in url[key]:
        print val, date

字典的格式如下:

url [key] =(['value','value2','value3'],'date')

其中一个键对应于长度为2的元组。但是,我不断收到以下错误:

2

Traceback (most recent call last):
  File "insertCIF.py", line 10, in <module>
    for val, date in url[key]:
ValueError: too many values to unpack

这很有趣,因为顶部的2是打印长度语句的结果。那么当我尝试解压缩2个值时,如何解压太多的值,并且我验证了元组的长度确实是2?

我知道我可以将url.items或iteritems作为一种解决方法(并且它确实有效)但是这个问题让我很好奇,我无法弄清楚或排除故障。

2 个答案:

答案 0 :(得分:2)

因为您尝试使用url[key]循环迭代for的值。为了分配值,你应该只做:

val, date = url[key]:

答案 1 :(得分:1)

首先,你真正想要的是:

val, date = url[key]

你正在做的是循环一个元组,同时将每个元素解压缩到val, date

url[key]方式循环,将获取url [key]'的第一个元素(这是你的列表)并将其解压缩到val, date,其中没有足够的变量(2)为您的清单(4项)。