我以編程方式創建列表字典的嘗試未能讓我單獨尋址字典鍵。每當我創建列表字典並嘗試追加到一個密鑰時,它們都會被更新。這裏是一個非常簡單的測試案例:如何在Python中初始化空列表的字典?
data = {}
data = data.fromkeys(range(2),[])
data[1].append('hello')
print data
實際結果:{0: ['hello'], 1: ['hello']}
預期結果:{0: [], 1: ['hello']}
這裏是什麼工作
data = {0:[],1:[]}
data[1].append('hello')
print data
實際和預期成果:{0: [], 1: ['hello']}
爲什麼fromkeys
方法不能按預期方式工作?
那麼這是相當不直觀的行爲,任何想法爲什麼同一個對象用於所有鍵? – Bar 2016-04-13 19:05:21
@Bar因爲除了Python語言的語義之外,沒有別的功能可以做。你傳遞一個單獨的對象作爲所有鍵的值,這樣所有鍵都使用單個對象。''fromkeys()'方法接受一個工廠函數會更好,所以我們可以將'list'作爲一個函數傳入,並且每個創建的密鑰都會調用一次函數,但這不是實際的API 'dict.fromkeys()'。 – 2016-04-13 20:30:22