2014-09-28 99 views
0

似乎我的代碼運行不正常,每次運行它似乎議程的關鍵值被替換爲我輸入的下一個替代將其添加爲新的。請幫助我發現爲什麼會發生這種情況,以及如何解決這個問題。謝謝!鍵和字典

def contactos(): 
    q=int(raw_input("Desea agregar un contacto (1=si, 0=no): ")) 
    while q==1: 

     a=raw_input("ingrese nombre contacto, telefono, mail (delimitados por espacio)") 
     d=a.split()   

     agenda={} 

     agenda[d[0]]= "nombre", d[0], "telefono: ", d[1], "mail :", d[2] 

     q=int(raw_input("Desea agregar otro contacto (1=si, 0=no): ")) 

     print agenda.keys() 


    return agenda 
+1

僅供參考,這是一個好主意,讓所有的代碼英文。在格式化代碼時也要遵循PEP8! – ThiefMaster 2014-09-28 15:57:16

+0

'agenda = {}'每次重置變量。 – mdurant 2014-09-28 16:00:59

回答

0

您通過循環每次重新agenda到一個空的字典。在循環之前初始化它一次

def contactos(): 
    agenda = {} 
    q=int(raw_input("Desea agregar un contacto (1=si, 0=no): ")) 
    while q==1: 

     a=raw_input("ingrese nombre contacto, telefono, mail (delimitados por espacio)") 
     d=a.split()   

     agenda[d[0]]= "nombre", d[0], "telefono: ", d[1], "mail :", d[2] 

     q=int(raw_input("Desea agregar otro contacto (1=si, 0=no): ")) 

     print agenda.keys() 

注意Cyber​​的答案,以及,如果你想添加多個電話號碼和地址相同的名稱。

+0

哇謝謝!有效! – 2014-09-28 16:05:45

0

不是指定的,這將覆蓋值

agenda[d[0]]= "nombre", d[0], "telefono: ", d[1], "mail :", d[2] 

你將不得不append

agenda[d[0]].append(["nombre", d[0], "telefono: ", d[1], "mail :", d[2]]) 
+1

這將要求他首先初始化列表(例如使用'setdefault')或者使用'defaultdict' – ThiefMaster 2014-09-28 15:57:50

+0

,那沒有用......我不知道你可以在字典中使用append函數。 – 2014-09-28 16:03:39