迭代与字典里面
问题描述:
遇到问题遍历元组像这样一个元组:迭代与字典里面
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'}
答
你需要把t
其他一些可迭代的容器内:
for a, b, c in [t]:
print(a, b, c)
的问题,你的企图是对每一个从t
遍历一个单一的元素,并试图解压缩。例如该回路的第一圈试图将'a'
分解成三个地方(a
,b
和c
)。
显然,它也可能是更好的只是直接解压(无需环路):
a, b, c = t
print(a, b, c)
答
试试这个:
for a,b,c in [t]:
print(a,b,c)
把t
列表内将允许你解压它。
答
试试这个
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)
+0
这样做每次迭代只产生一个元组中的一个元素,并不是我所期待的。感谢您的快速回应。 – denvaar
答
你为什么迭代都当它是一个单一的tuple
?只要解单tuple
,如果这是你需要做的:
a, b, c = t
print(a, b, c)
或者如果它只是打印你想要做的调用本身解压:
print(*t)
答
您可以使用元组与多个开箱分配:
a, b, c = t
print(a, b, c)
太棒了!谢谢,把它放在列表中,就像我期待的那样。 – denvaar