我有一個文本檔案,看起來像這樣:
我有一個文本檔案,看起來像這樣:
tomato 7000
馬鈴薯和梨8000。
西梅 892
西紅柿 8
胡蘿卜 600
西梅 3
為了把它變成一個字典,忽略那些有更多單詞的行(這是我想要的,所以potato和pear被忽略了,這很好),我寫道:
with open("C:pathfood. txt", encoding="utf-8") as f_skipped:
結果={}。
for line in f_skipped:
try:
k, v = line.split()
except ValueError:
通過
else:
結果[k] = v
但是由于不能有重復的鍵,所以它取的是后面出現的值,所以tomato和prunes分別有8和3的值。有沒有辦法只取第一次出現的值而忽略后面的一次呢?
我想過保留我的代碼,只是把文本轉過來(聽起來有點傻)或者檢測是否有重復的詞(后者有點冒險,因為有很多行有很多詞,反正我只是想忽略)。
uj5u.com熱心網友回復:
試試這個.get(key)方法,如果鍵沒有退出,字典將回傳None,否則回傳鍵的值。
我希望這是你通過閱讀你的問題所想要的。
filename = "text.txt"
with open(filename, encoding="utf-8") as f_skipped:
結果={}。
for line in f_skipped:
try:
k, v = line.split()
except ValueError:
通過
else:
if result.get(k) is None:
結果[k] = v
print(result)
輸出
py code.py
{'tomato': '7000', '梅子': '892', '胡蘿卜': '600'}。
uj5u.com熱心網友回復:
試試這個:-
with open('food.txt') as food:
D = {}
for line in food:
t = line.split()
k = ' '.join(t[0:-1] )
if not k in D。
D[k] = t[-1] 。
print(D)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/328605.html
標籤:
上一篇:這是升級標準庫鎖的有效方法嗎?
