为什么这个字典变成了元组?

mac*_*ggy 2 python dictionary

我有一本复杂的字典:

l = {10: [{'a':1, 'T':'y'}, {'a':2, 'T':'n'}], 20: [{'a':3,'T':'n'}]}
Run Code Online (Sandbox Code Playgroud)

当我尝试迭代字典时,我没有得到带有字典值列表的字典,我得到了一个像这样的元组:

for m in l.items():
    print(m)

(10, [{'a': 1, 'T': 'y'}, {'a': 2, 'T': 'n'}])
(20, [{'a': 3, 'T': 'n'}])
Run Code Online (Sandbox Code Playgroud)

但是当我打印 l 时,我得到了我原来的字典:

In [7]: l
Out[7]: {10: [{'a': 1, 'T': 'y'}, {'a': 2, 'T': 'n'}], 20: [{'a': 3, 'T': 'n'}]}
Run Code Online (Sandbox Code Playgroud)

如何迭代字典?我仍然需要键并处理值列表中的每个字典。

Mic*_*elD 5

这里有两个问题。首先,您问为什么这会变成“元组” - 该问题的答案是因为这就是.items()字典上的方法返回的内容 - 每个键/值对的元组。

了解这一点后,您就可以决定如何使用这些信息。您可以选择在迭代期间将元组扩展为两部分

for k, v in l.items():
    # Now k has the value of the key and v is the value
    # So you can either use the value directly
    print(v[0]);
    # or access using the key
    value = l[k];
    print(value[0]);
    # Both yield the same value



Run Code Online (Sandbox Code Playgroud)