2014-08-28 147 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