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']}")
谢谢大家的帮助