我在排序47万个元组时出错。 我把csv文件中的数据读入元组列表
fp = open(filename, 'Ur')
for line in fp:
listOfCitiesTuples.append(tuple(line.strip().split(',')))
fp.close()
元组是一些与数字相关联的城市名称。在
^{pr2}$我把所有和同一个号码相关联的名字收集在一个列表中,然后把它映射到那个号码,然后对所有这些项目形成一个dict,类似这样
{'1': ['Bombuflat', 'Garacharma', 'Port Blair', 'Rangat'], '113': ['Hydra', 'Kouba'], '294': ['Vienna', 'Wien'], '1327': ['Lambarene', 'Ndjole']}
采用以下方法实现
for k, v in listOfCitiesTuples: dictOfCitiesTuples.setdefault(v, []).append(k)
对于较小数量的元组(到目前为止,我已经测试了20000个),但是对于更大的元组(比如470000个)似乎没有效果。在
大量的元组是个问题还是由于文件损坏?如果这是由于文件中的某些损坏的数据造成的,我能做些什么来找出它是什么样的损坏数据,比如try,exception?在
我得到这个错误
File "/../view.py", line 186, in getCities
for k, v in listOfCitiesTuples: dictOfCitiesTuples.setdefault(v, []).append(k)
ValueError: too many values to unpack (expected 2)
根据您的标题
ValueError: too many values to unpack
,您有一些数据的格式与预期的不同。在特别是,有些行有一个以上的逗号,这将使一个元组包含2个以上的值,这会在您试图解包它们时导致错误。在
在迭代文件时,可以检查元组的长度是否正确。如果发现错误数据,可以记下并修复,也可以忽略它。取决于你的需要。在
通过查看代码并进行猜测,可能会发生的情况是,文件的最后一行可能是一个没有任何内容的额外行。因此
line.strip().split(',')
返回一个大小为1
的列表,它成为一个大小为1
的元组,在for循环中爆炸。添加以下防护装置:相关问题 更多 >
编程相关推荐