我的要求是在所有条件满足后用另一个字典更新字典。 这是一个类似的代码片段;
hello = {}
he = {"a":1}
j = 0
def abc(i):
if i % 2 == 0:
hello["b"] = i #<----- Error occurs here
print hello #<----- Error occurs here
else:
hello.clear() #<----- Error occurs here
hello = he #Because of this line error occurs in the above lines
print hello
while j < 15:
print "j = ", j
abc(j)
j += 1
当我在def abc(i)
中声明全局时,错误消失了,但输出只是眩目。
hello = {}
he = {"a":1}
j = 0
def abc(i):
global he, hello
if i % 2 == 0:
hello["b"] = i
print hello
else:
hello.clear()
hello = he
print hello
while j < 15:
print "j = ", j
abc(j)
j += 1
它自动清除并更新hello
和he
,因为he
上没有发生任何操作。
如何解决这个问题。
答案 0 :(得分:1)
当您为hello
分配he
时,您需要hello = he
,但只需说hello
使he
参考 {{1} }。它现在只是同一个字典的另一个名称。要解决您的问题,请说出hello = he.copy()