无法迭代这样的元组:
t = ('a','b',{'c':'d'})
for a,b,c in t:
print(a,b,c) # ValueError: not enough values to unpack (expected 3, got 1)
for a,b,*c in t:
print(a,b,c) # ValueError: not enough values to unpack (expected 2, got 1)
for a,b,**c in t:
print (a,b,c) # Syntax error (can't do **c)
任何人都知道如何保存字典值?我想看a='a', b='b', and c={'c':'d'}
答案 0 :(得分:2)
您需要将t
放在其他可迭代容器中:
for a, b, c in [t]:
print(a, b, c)
您尝试的问题是每个on都在迭代来自t
的单个元素并尝试解压缩它。例如循环的第一个转弯是尝试将'a'
解压缩到三个位置(a
,b
和c
)。
显然,直接解包也可能更好(不需要循环):
a, b, c = t
print(a, b, c)
答案 1 :(得分:2)
为什么当它是tuple
时,你会进行迭代?只需解压单tuple
,如果您需要执行此操作:
a, b, c = t
print(a, b, c)
或者,如果它只是打印,你想在呼叫本身中解压缩:
print(*t)
答案 2 :(得分:1)
试试这个:
for a,b,c in [t]:
print(a,b,c)
将t
放入列表中可以将其解压缩。
答案 3 :(得分:0)
试试这个
for x in t:
print(x)
x
会迭代地采用t
中的所有值,因此'a'
,然后是'b'
,最后是{'c':'d'}
。
要准确打印a = 'a'
等,您可以这样做:
for param, val in zip(["a","b","c"], t):
print(param,"=",val)
答案 4 :(得分:0)
您可以使用带有多个赋值的元组解包:
a, b, c = t
print(a, b, c)