Python 为什么这本词典会变成元组?

Python 为什么这本词典会变成元组?,python,dictionary,Python,Dictionary,我有一本复杂的字典: l = {10: [{'a':1, 'T':'y'}, {'a':2, 'T':'n'}], 20: [{'a':3,'T':'n'}]} In [7]: l Out[7]: {10: [{'a': 1, 'T': 'y'}, {'a': 2, 'T': 'n'}], 20: [{'a': 3, 'T': 'n'}]} 当我尝试迭代字典时,我没有得到一个包含值列表的字典,我得到的是一个元组,如下所示: for m in l.items(): print(m)

我有一本复杂的字典:

l = {10: [{'a':1, 'T':'y'}, {'a':2, 'T':'n'}], 20: [{'a':3,'T':'n'}]}
In [7]: l
Out[7]: {10: [{'a': 1, 'T': 'y'}, {'a': 2, 'T': 'n'}], 20: [{'a': 3, 'T': 'n'}]}
当我尝试迭代字典时,我没有得到一个包含值列表的字典,我得到的是一个元组,如下所示:

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

(10, [{'a': 1, 'T': 'y'}, {'a': 2, 'T': 'n'}])
(20, [{'a': 3, 'T': 'n'}])
但当我刚打印l时,我得到了我的原始词典:

l = {10: [{'a':1, 'T':'y'}, {'a':2, 'T':'n'}], 20: [{'a':3,'T':'n'}]}
In [7]: l
Out[7]: {10: [{'a': 1, 'T': 'y'}, {'a': 2, 'T': 'n'}], 20: [{'a': 3, 'T': 'n'}]}

我如何反复阅读字典?我仍然需要键并处理值列表中的每个字典。

使用字典,您可以在迭代时添加另一个变量

for key, value in l.items():
    print(key,value)

这里有两个问题。首先,您会问为什么会将其转换为“元组”-该问题的答案是因为字典上的
.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



在处理嵌套对象时,我通常依赖于一眼就能知道我处理的是什么结构

from pprint import pprint
l = {10: [{'a':1, 'T':'y'}, {'a':2, 'T':'n'}], 20: [{'a':3,'T':'n'}]}
pprint(l, indent=4, width=40)
输出:

{   10: [   {'T': 'y', 'a': 1},
            {'T': 'n', 'a': 2}],
    20: [{'T': 'n', 'a': 3}]}

其他人已经用实现来回答了。

感谢所有的帮助。我确实讨论过如何处理这个问题。以下是我提出的实施方案:

for m in l.items():
    k,v = m
    print(f"key: {k}, val: {v}")
    for n in v:
        print(f"key: {n['a']}, val: {n['T']}")
谢谢大家的帮助