如何编写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
相关产品推荐
相关产品推荐

