Python 如果包含在循环中,是否清除字典

Python 如果包含在循环中,是否清除字典,python,loops,dictionary,Python,Loops,Dictionary,想知道循环继续时是否清除了循环中包含的词典 for x in list: dict_1 = {} do_some_stuff_here: continue 移动到列表中的下一项时是否清除词典 你为什么不检查一下呢 In [1]: for i in range(5): ...: my_dict = {} ...: my_dict[i] = i+1 ...: In [2]: my_dict Out[2]: {4: 5} 如果希

想知道循环继续时是否清除了循环中包含的词典

for x in list: 
  dict_1 = {} 
  do_some_stuff_here: 
    continue 

移动到列表中的下一项时是否清除词典

你为什么不检查一下呢

In [1]: for i in range(5):
   ...:     my_dict = {}
   ...:     my_dict[i] = i+1
   ...:     

In [2]: my_dict
Out[2]: {4: 5}
如果希望词典保留值,则必须提前声明

In [5]: my_dict = {}

In [6]: for i in range(5):
   ...:     my_dict[i] = i+5
   ...:     

In [7]: my_dict
Out[7]: {0: 5, 1: 6, 2: 7, 3: 8, 4: 9}

是的,当循环完成时,您在循环中初始化的字典将被清除

如果不希望字典不断被清除,请在循环外部初始化字典

dict_1 = {} 
for x in list: 
  do_some_stuff_here_with_dict_1: 
    continue
以下是两者之间的比较:

outside = {} # Outside of loop

for x in range(5):
  inside = {} # Inside of loop
  outside[x] = 0
  inside[x] = 0

print(outside)
print(inside)
输出:

{0: 0, 1: 0, 2: 0, 3: 0, 4: 0}

{4: 0}

实际上,每次循环运行时,您都将字典设置回
{}
。因此,在程序完成后,您的
词典
只有一个条目。

它不会被“清除”。循环的每一圈都会创建一个新的(空)字典。在循环的每一次迭代开始时,
dict_1={}
将被执行,从而创建一个空字典。循环结束后,
dict_1
仍然存在,并且在最后一次循环迭代中添加到其中的所有数据都将被清除,而且会被空数据覆盖。