簡體   English   中英

如何將文本文件轉換為字典?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM