在里面用dict迭代一个元组

时间:2016-08-05 03:50:25

标签: python python-3.x python-3.4

无法迭代这样的元组:

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'}

5 个答案:

答案 0 :(得分:2)

您需要将t放在其他可迭代容器中:

for a, b, c in [t]:
    print(a, b, c)

您尝试的问题是每个on都在迭代来自t的单个元素并尝试解压缩它。例如循环的第一个转弯是尝试将'a'解压缩到三个位置(abc)。

显然,直接解包也可能更好(不需要循环):

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)