如何使用 for 循环将信息保存在嵌套字典中

How to save information in a nested dictionary using forloops

我正在练习如何更好地使用 python 中的词典。为了练习,我正在尝试编写一个程序,从文件中读取有关人​​员的信息,然后将信息存储在像这样的嵌套字典中 {'key':value, {gender:male_or_female} }

数据文件看起来像

Bob, 35, Male
George, 53, Male
Karen, 67, Female
Jamie, 20, Female
Aisha, 12, Female
Maria, 50, Female
Rolf, 16, Male
Ali, 90, Male

到目前为止我写的代码是这样的

def extract_person_data(filename):
    dicti = {}

    infile = open(filename)

    for line in infile:
        words = line.split(",")
        name = words[0]
        age = words[1]
        gender = words[2]
        dicti[name] = age
        dicti["Gender"] = gender
    infile.close()

    return dicti

print(extract_person_data("people.txt"))

程序输出:

{'Bob': ' 35', 'Gender': ' Male', 'George': ' 53', 'Karen': ' 67', 'Jamie': ' 20', (...)}

请注意,'Gender': 'Male 仅出现在第一个列表项中。换句话说,它 returns 是我想要的,但不完全是。

我的问题是

如何将嵌套字典分配给每个主列表项,如 {'key':value, {gender:male_or_female} }

希望有好心人给一个好学的菜鸟一个解决方案和解释一下

非常感谢所有帮助。

我认为您真正想要的是创建一个 list 个元素,每个元素都是一个 dict,每个人的数据具有键值对:

def extract_person_data(filename):
    result = []

    infile = open(filename)

    for line in infile:
        words = line.split(",")
        name = words[0]
        age = words[1]
        gender = words[2]
        dicti = {'name':name, 'age':age, 'Gender': gender}
        result.append(dicti)
    infile.close()

    return result

print(extract_person_data("people.txt"))

我建议进行一些改进。

使用 ", " 拆分行以删除前导 space。还有 .strip() 删除尾随换行符的行。

那么最好使用with open(...来确保文件始终处于关闭状态。

def extract_person_data(filename):
    result = []

    with open(filename) as infile:
        for line in infile:
            words = line.strip().split(", ")
            name = words[0]
            age = words[1]
            gender = words[2]
            dicti = {'name':name, 'age':age, 'Gender': gender}
            result.append(dicti)

    return result