我正在練習如何更好地使用 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僅出現在第一個串列項中。換句話說,它回傳了我想要的東西,但不完全是。
我的問題是
如何將嵌套字典分配到每個主要串列項中,例如{'key':value, {gender:male_or_female} }?
希望有好心人給渴望學習的菜鳥提供解決方案和一些解釋。
非常感謝所有幫助。
uj5u.com熱心網友回復:
我認為你真正想要的是創建一個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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322838.html
