2013-11-15 35 views
1

我正在創建一個字典來存放姓名和電話號碼,並由pickle存儲到本地。 現在我面臨的問題是:它看起來像合併不能正常工作。 ,有什麼想法?謝謝。Python 2 dicts合併

import pickle 
def add(name,contact): 
    person= {}; 
    person[name] = contact; 
    print('new added: ',person); 

    mycontactfile = 'contactlist.txt'; 
    f = open(mycontactfile,'rb'); 
    storedcontact = pickle.load(f); 
    f.close(); 
    print('saved list:',storedcontact); 

    storedcontact.update(person); # add a new contact to the list 

    f = open(mycontactfile,'wb'); 
    pickle.dump(storedcontact,f); 

    print('now full list is:' ,storedcontact); 
+4

只是一個建議,你不必使用';'來表示行的結束,像在C或C++ – thefourtheye

+0

[我該如何合併(聯合)兩個Python dictiona的可能重複在一個單一的表達?](http://stackoverflow.com/questions/38987/how-can-i-merge-union-two-python-dictionaries-in-a-single-expression) – aIKid

+1

我發現原因, person和storedcontact具有相同的密鑰,所以輸出只顯示一個。謝謝大家,儘管 – user2986226

回答

0

如果你有多個聯繫人去同一個名字,你需要listdict。你會添加聯繫人這樣

if name in storedcontact: 
    storedcontact.append(contact) 
else: 
    storedcontact[name] = contact 

更重要的是,停止使用泡菜和切換到sqlite

旁白: 你也可以一步到位這樣的初始化person(但你並不真的需要person了)

person = {name: contact}