You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向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)

关键修改说明

  1. 统一嵌套结构:把所有联系人改成带明确键的嵌套字典,每个字段(姓名、电话等)都有对应键,后续增删改查更规范;
  2. 自动生成键:通过计算当前最大序号,自动生成新联系人的键(比如现有2个,新增的就是3、4...),避免手动输入的麻烦;
  3. 正确添加嵌套字典:先把用户输入的所有字段组装成一个完整的联系人字典,再将这个字典作为值,添加到外层的my_contacts中;
  4. 修正拼写错误:把adress改为address,保证字段名统一。

如果想用姓名作为外层字典的键(需注意姓名重复的情况),可以把str(current_max_id)替换为name,但用序号作为键更稳妥,能避免重复冲突。

内容的提问来源于stack exchange,提问作者Mohamed Sayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:15:31