如何用另一个字典更新全局字典?

时间:2016-02-16 17:12:30

标签: python dictionary

我的要求是在所有条件满足后用另一个字典更新字典。 这是一个类似的代码片段;

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

它自动清除并更新hellohe,因为he上没有发生任何操作。 如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

当您为hello分配he时,您需要hello = he,但只需说hello使he 参考 {{1} }。它现在只是同一个字典的另一个名称。要解决您的问题,请说出hello = he.copy()