如何使用 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
我正在练习如何更好地使用 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