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