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



我正在练习如何在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只出现在第一个列表项中。换句话说,它返回了我想要的东西,但又不完全是。

My questions is

如何将一个嵌套字典分配到每个主列表项中,如{'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"))

我有一些改进的建议。

使用", "分隔行以删除前导空格。同时.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

最新更新