迭代元组时出现以下错误。我不确定要对迭代进行哪些更改。任何帮助,将不胜感激。
ValueError:太多值无法解包(预期3)
程序:-
def convert_tuple_to_dict(self, tup):
dt = defaultdict(list)
temp_lst = []
for i in range(len(tup)):
if (len(tup[i]) == 2):
for a, b in tup:
dt[a].append(b)
if (len(tup[i]) == 3):
print(tup[i])
for (a, b, c) in tup[i]:
dt[a].append(b)
dt[a].append(c)
return dict(dt)
run = DataType()
print(run.convert_tuple_to_dict(
(('1328', '50434022', '53327'), (777, '5000435011607', '00720645'))))
追溯详细信息:
Traceback (most recent call last):
File "foo/DataType.py", line 95, in <module>
print(run.convert_tuple_to_dict(
File "foo/DataType.py", line 86, in convert_tuple_to_dict
for (a, b, c) in tup[i]:
ValueError: too many values to unpack (expected 3)
('1328', '50434022', '53327')
预期产量:
{'1328': ['50434022', '53327'], 777: ['5000435011607', '00720645']}
if (len(tup[i]) == 3): print(tup[i]) for (a, b, c) in tup[i]:
在这里,您要检查tup [i]的长度,然后对其进行迭代,并尝试进一步拆开每个项目的包装。
因此,鉴于tup[i] = ('1328', '50434022', '53327')
您要做的是:
a, b, c = '1328'
a, b, c = '50434022'
a, b, c = '53327'
这不太可能是您要尝试执行的操作。解决方案是不迭代元组,只需解压缩分配...
a, b, c = tup[i]
# do the thing
偶然地,在2元组的情况下您有相同的错误。
您的代码段中还有其他一些值得商bat的地方:
tup
根本不是一个元组,它是一系列输入,因此命名具有误导性def convert_tuple_to_dict(self, in_tuples):
dt = defaultdict(list)
for key, *values in in_tuples:
dt[key].extend(values)
return dict(dt)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句