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

如何编写Python函数实现姓名录入字典 支持同姓不同名存储

问题分析

你现有代码的核心问题是每次录入新人员时,会直接覆盖people字典里的name和surname键,最终只能保存最后一条录入的人员信息,无法满足多人员存储的需求。

可行实现方案

这里提供两种常用实现思路,你可以根据后续的使用场景选择:

  • 方案1适合需要按姓氏快速检索人员的场景
  • 方案2适合后续需要给人员追加其他属性(比如年龄、联系方式)的场景

方案1:按姓氏分组存储

以姓氏作为顶层字典的键,对应的值为该姓氏下所有名字的列表,天然支持同姓不同名的存储需求:

def add_people():
    people_dict = {}
    prompt = input("是否需要添加人员到列表?(Y/N): ")
    while prompt.lower() == "y":
        first_name = input("请输入名字:")
        last_name = input("请输入姓氏:")
        # 姓氏已存在就追加名字,不存在就初始化新列表
        if last_name in people_dict:
            people_dict[last_name].append(first_name)
        else:
            people_dict[last_name] = [first_name]
        print(f"当前已存储人员:{people_dict}")
        prompt = input("是否继续添加其他人员?(Y/N): ")
    print(f"最终存储结果:{people_dict}")
    return people_dict

add_people()

方案2:列表存储独立人员记录

顶层用列表存储,每个元素为单个人员的信息字典,每条人员记录相互独立,扩展性更强:

def add_people():
    people_list = []
    prompt = input("是否需要添加人员到列表?(Y/N): ")
    while prompt.lower() == "y":
        person = {}
        person['first_name'] = input("请输入名字:")
        person['last_name'] = input("请输入姓氏:")
        people_list.append(person)
        print(f"当前已存储人员:{people_list}")
        prompt = input("是否继续添加其他人员?(Y/N): ")
    print(f"最终存储结果:{people_list}")
    return people_list

add_people()

内容的提问来源于stack exchange,提问作者Riley Ittidecharchoti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:21:03