键和词典

时间:2014-09-28 15:55:47

标签: python

似乎我的代码运行不正常,每次我运行它时,似乎议程的关键值被我输入的下一个替换,而不是将其添加为新的。请帮助我找到为什么会发生这种情况以及如何解决它。谢谢!

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

3 个答案:

答案 0 :(得分: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 :(得分: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()

如果您想为同一个名字添加多个电话号码和地址,请注意网络的答案。

答案 2 :(得分:0)

你应该/可以使用班级

https://docs.python.org/2/reference/datamodel.html

这是一个非常简单的例子

class contact:
    def __init__(self, name="", phone="", mail=""):
        self.phone = phone
        self.name = name
        self.mail = mail




a = contact("A name")
print a.name
a.mail = "test@gmail.com"
print a.mail