【发布时间】:2020-01-29 11:21:36
【问题描述】:
在迭代元组时出现以下错误。我不确定我需要应用哪些更改来进行迭代。任何帮助将不胜感激。
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']}
【问题讨论】:
-
您能否在循环的每次迭代中打印出
tup,以检查发生了什么? -
@JammyDodger 在 if 条件下添加了打印语句,您可以在回溯底部看到打印的消息。
-
在元组 (777, '5000435011607', '00720645') 你真的需要 '777' 吗?
-
@t_e_o 我已经添加了预期的结果。
-
这种for循环是从哪里学来的?
for x,y,z in list? @Tester
标签: python