使用附加

时间:2018-12-01 19:23:20

标签: python dictionary

我正在尝试创建一个朋友字典,在其中我可以添加一个朋友并将他的信息放在那里。

我想使用朋友的名字作为钥匙,两个数字,两个电子邮件以及有关他的住处的信息。

我的问题是,当我要求输入数字和电子邮件时,我的程序崩溃了,我不知道自己做错了什么。

我使用了append函数,因为每个朋友的号码都保存在列表中。我不想要新的程序来修复我的程序,所以我可以理解为什么它失败了。

我想做的另一件事是不打印即时通讯创建的空字典,它里面有字典的列表(每个朋友都是字典),所以我想我应该说打印从位置1到末尾列出,但我想有更好的方法,在这里发布代码,错误是当我要求第一部和第二部电话和邮件时。

def add_contact(friends):
    contact = {}
    contact["name"]=input("name: ")
    for i in range(2):
        contact["phone"][i]=input("phone: ") #Here it crashes
    for i in range(2):
        contact["mail"][i]=input("mail: ") #Here too

    contact["street"]=input("street: ")
    contact["housenum"]=input("housenum: ")
    contact["cp"]=input("cp: ")
    contact["city"]=input("city: ")
    friends.append(contact)

friends = [{"name":[{"telf":[0]*2},{"mail":[0]*2}, 
{"street":"","housenum":"","cp":"", "city":""}]}] #This is the list im creating to fill it with friends information, the first dictionary in the list is an empty dictionary which i dont want to print.
add_contact(friends)
print(friends)

2 个答案:

答案 0 :(得分:2)

您需要为电话和电子邮件创建一个列表,然后添加到列表:

def add_contact(friends):
    contact = {}
    contact["name"]=input("name: ")
    contact["phone"] = []
    contact["mail"] = []
    for i in range(2):
        contact["phone"].append(input("phone: "))
    for i in range(2):
        contact["mail"].append(input("mail: "))

    contact["street"]=input("street: ")
    contact["housenum"]=input("housenum: ")
    contact["cp"]=input("cp: ")
    contact["city"]=input("city: ")
    friends.append(contact)

friends = [{"name":[{"telf":[0]*2},{"mail":[0]*2}, 
{"street":"","housenum":"","cp":"", "city":""}]}] #This is the list im creating to fill it with friends information, the first dictionary in the list is an empty dictionary which i dont want to print.
add_contact(friends)
print(friends)

答案 1 :(得分:0)

解决方案的问题是您试图为不存在的事物增加价值。

当您联系[“电话”]时。这将在词典联系人中创建一个键。 {“电话”:} 但是问题是您确实要联系[“ phone”] [i]。因此,在此关键字中搜索第ith个元素。不存在。因此,您会出错。因此,您首先需要将列表添加到此字典中。然后只有您可以添加多个数字

def add_contact(friends):
    contact = {}
    contact["name"]=input("name: ")
    contact["phone"] = []
    contact["mail"] = []
    for i in range(2):
        contact["phone"].append(input("phone: "))
    for i in range(2):
        contact["mail"].append(input("mail: "))

    contact["street"]=input("street: ")
    contact["housenum"]=input("housenum: ")
    contact["cp"]=input("cp: ")
    contact["city"]=input("city: ")
    friends.append(contact)

friends = [{"name":[{"telf":[0]*2},{"mail":[0]*2}, 
{"street":"","housenum":"","cp":"", "city":""}]}] #This is the list im creating to fill it with friends information, the first dictionary in the list is an empty dictionary which i dont want to print.
add_contact(friends)
print(friends)