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

Python中如何用for循环将读取的人员信息存入嵌套字典

问题原因

你现有代码的问题在于:

  • 你把Gender键直接放在了最外层的主字典中,每次循环都会覆盖这个键的值,最终只会保留最后一行数据的性别
  • 每个姓名对应的值仅存储了年龄,没有按要求存放包含年龄、性别信息的嵌套字典

你预期的{'key':value, {gender:male_or_female} }格式不符合Python字典语法,调整后的合理嵌套结构应为:外层字典的键是姓名,对应的值是包含age、gender两个键的子字典,示例如下:
{'Bob': {'age': 35, 'gender': 'Male'}, 'George': {'age': 53, 'gender': 'Male'}}

解决方案

修改说明

  • 循环内每个姓名对应的位置赋值为嵌套的子字典,同时存储年龄和性别
  • 对分割后的数据去除多余空白字符,避免存储无效空格
  • 采用with语句打开文件,无需手动调用close()方法,异常场景下也会自动释放文件资源
  • 年龄可转为整数类型,方便后续数值计算

完整实现代码

def extract_person_data(filename):
    dicti = {}
    with open(filename, 'r', encoding='utf-8') as infile:
        for line in infile:
            # 处理每行数据:去除首尾换行、按逗号分割、每个元素去除空白
            words = [item.strip() for item in line.strip().split(",")]
            name = words[0]
            age = int(words[1])
            gender = words[2]
            # 赋值嵌套字典
            dicti[name] = {
                'age': age,
                'gender': gender
            }
    return dicti

print(extract_person_data("people.txt"))

运行输出

{'Bob': {'age': 35, 'gender': 'Male'}, 'George': {'age': 53, 'gender': 'Male'}, 'Karen': {'age': 67, 'gender': 'Female'}, 'Jamie': {'age': 20, 'gender': 'Female'}, 'Aisha': {'age': 12, 'gender': 'Female'}, 'Maria': {'age': 50, 'gender': 'Female'}, 'Rolf': {'age': 16, 'gender': 'Male'}, 'Ali': {'age': 90, 'gender': 'Male'}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:45:02