如何向Python字典添加嵌套字典以实现通讯录功能?
解决Python通讯录添加嵌套字典的问题
先明确你代码里的核心问题:
- 初始联系人用的是集合(
{ "Tom Jones", "911", "22.10.1995"})而非嵌套字典,集合无键值对应,无法有序管理字段; - 添加联系人的逻辑错误,直接把单个字段(姓名、生日)作为外层字典的键,完全没创建嵌套结构;
- 存在拼写错误:
adress应为address。
修改后的完整代码
my_contacts = { "1": {"name": "Tom Jones", "phone": "911", "birthday": "22.10.1995"}, "2": {"name": "Bob Marley", "phone": "0800838383", "birthday": "22.10.1991"} } def add_contact(): user_input = int(input("请输入要添加的联系人数量: ")) # 获取当前最大联系人序号,自动生成新键 current_max_id = max(int(k) for k in my_contacts.keys()) if my_contacts else 0 for _ in range(user_input): current_max_id += 1 name = input("输入姓名: ") number = input("输入电话: ") birthday = input("输入生日: ") address = input("输入地址: ") # 组装新的嵌套字典 new_contact = { "name": name, "phone": number, "birthday": birthday, "address": address } # 将嵌套字典添加到外层通讯录字典 my_contacts[str(current_max_id)] = new_contact # 调用测试 add_contact() # 打印验证结果 print(my_contacts)
关键修改说明
- 统一嵌套结构:把所有联系人改成带明确键的嵌套字典,每个字段(姓名、电话等)都有对应键,后续增删改查更规范;
- 自动生成键:通过计算当前最大序号,自动生成新联系人的键(比如现有2个,新增的就是3、4...),避免手动输入的麻烦;
- 正确添加嵌套字典:先把用户输入的所有字段组装成一个完整的联系人字典,再将这个字典作为值,添加到外层的
my_contacts中; - 修正拼写错误:把
adress改为address,保证字段名统一。
如果想用姓名作为外层字典的键(需注意姓名重复的情况),可以把str(current_max_id)替换为name,但用序号作为键更稳妥,能避免重复冲突。
内容的提问来源于stack exchange,提问作者Mohamed Sayed
相关产品推荐
相关产品推荐

