[英]How to convert a text file into dictionary?
從一個文件中,我應該返回一個字典,其中每個鍵都是一個人的名字,每個值都是一個列表,其中包含三個元素:人的性別、人的年齡和人的身高。
例如,如果我的文件“file.txt”有如下兩行:
彼得,男性,18 歲,180 歲
安德魯,男性,40 歲,175 歲
那么這個函數返回的字典將是:
{"Peter": ["male", 18, 180], "Andrew": ["male", 40, 175]}
我試過:
d={}
L=[]
f= open("items.txt","r")
for line in f:
(key, val) = line.split(",",1)
value= val.split(",")
L.append(value)
d[key] = L
return d
f.close()
它返回: {'Peter': [['male', '18', '180 \\n'], ['male', '40', '175']], 'Andrew': [['male' , '18', '180 \\n'], ['男', '40', '175']]}
您的代碼使用相同的L
變量,從而導致您不想要的累積效應。 此外,它不會將整數字符串轉換為整數,也不會刪除最后一項的行尾字符。
另一個小錯誤是返回值並在之后關閉文件(未達到此 close 語句,因此每當 python 決定時關閉文件。在這些情況下, with
上下文管理器總是更好)
如果f
是您的文件句柄(或行列表),則此單行程序可以完成以下工作:
f="""a,b,1,2
apple,banana,3,4""".splitlines()
d = {t[0]:[int(x) if x.isdigit() else x.rstrip() for x in t[1:]] for t in (l.split(",") for l in f)}
它根據逗號進行拆分,然后構建字典理解,使用第一項作為鍵,其他項作為值,使用rstrip
處理最后一個字段的換行符。
額外的字符串到整數轉換使用isdigit
所以它並不完美。 (不適用於負數)。 可以用輔助功能代替。
結果:
{'apple': ['banana', 3, 4], 'a': ['b', 1, 2]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.