n = int(input())
name = []
T = {}
for i in range(n):
data = input().split(" ")
if data[2] not in name:
name.append(data[2])
T[data[2]] = {}
T[data[2]][data[0]] = data[1]
print(T)
输入以下内容:
4
key2 1 A
key3 2 B
key1 5 A
key1 5 B
当我删除“ name.append(data [2])”时,我得到了
{'A':{'key2':'1'}}
{'A':{'key2':'1'},'B':{'key3':'2'}}
{'A':{'key1':'5'},'B':{'key3':'2'}}
{'A':{'key1':'5'},'B':{'key1':'5'}}
如果没有,我会得到
{'A':{'key2':'1'}}
{'A':{'key2':'1'},'B':{'key3':'2'}}
{'A':{'key2':'1','key1':'5'},'B':{'key3':'2'}}
{'A':{'key2':'1','key1':'5'},'B':{'key3':'2','key1':'5'}}
为什么?
答案 0 :(得分:1)
删除name.append(data[2])
后,每次循环中T[data[2]][data[0]] = data[1]
都会被覆盖,因此您将获得T
中的最后一个值。
答案 1 :(得分:0)
当我删除
时name.append(data[2])
您的代码正在使用name
来确定是否需要重新创建A
中的B
或T
键。如果您停止对此进行跟踪,则每次都会重新创建它们,因此只有最后的更改可见(因为之前的所有更改都被丢弃了)。
顺便说一句,您可以通过将name
条件从if
更改为data[2] not in name
来完全删除data[2] not in T
变量。使用in
检查字典中是否有内容,只检查该字典的键,这就是您想要的。