所以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作为一种解决方法(并且它确实有效)但是这个问题让我很好奇,我无法弄清楚或排除故障。
答案 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项)。