2014-08-28 74 views
-2

我想下面Python代码运行程序意外执行

list_name = [] 
dictionary = {'fname' : '' , 'lname' :''} 
for i in range(0,2): 
    dictionary['fname'] = i 
    dictionary['lname'] = i 
    print dictionary 
    list_name.append(dictionary) 
    #dictionary = {'fname' : '' , 'lname' :''} 
print "List : ", list_name 

输出

{'lname': 0, 'fname': 0} 
{'lname': 1, 'fname': 1} 
Array : [{'lname': 2, 'fname': 2}, {'lname': 2, 'fname': 2}] 

当我在上面的代码中去掉这一行dictionary = {'fname' : '' , 'lname' :''}
我得到这个

Out把

{'lname': 0, 'fname': 0} 
{'lname': 1, 'fname': 1} 
Array : [{'lname': 0, 'fname': 0}, {'lname': 1, 'fname': 1}] 

我没有得到蟒蛇的默认行为......请解释

+1

该代码附加**相同的字典**两次。 – falsetru 2014-08-28 13:39:15

+0

@falsetru为什么相同的字典被附加两次,这是我的问题。它应该是不同的,因为我在一个循环中追加 – Wazzzy 2014-08-28 13:44:44

+1

引用'字典'从未改变。在循环中尝试'print id(dictionary)' – falsetru 2014-08-28 13:47:14

回答

0

我得到了答案感谢@falsetru为他的评论,当我print id(dictionary)
我得到相同的ID打印当我评论dictionary = {'fname' : '' , 'lname' :''}
我得到不同的ID打印

list_name = [] 
dictionary = {'fname' : '' , 'lname' :''} 
for i in range(0,2): 
    dictionary['fname'] = i 
    dictionary['lname'] = i 
    print dictionary 
    print id(dictionary) 
    list_name.append(dictionary) 
    #dictionary = {'fname' : '' , 'lname' :''} 
print "List : ", list_name