簡體   English   中英

從文本到字典,更新鍵

[英]From text to dictionary, update keys

我有這種格式的文本文件:

key1 value1
key2 value2
key3 value3
key3 value4
key1 value5

我使用循環(下面的代碼)創建字典。 我有一個問題,在這個文本文件中有很多重復的鍵,但是具有不同的值。 我的循環不會向現有鍵添加新值,但是會完全覆蓋它。 結果,該鍵仍然是該鍵在文件中的最后一個值。

我需要一本包含所有鍵及其所有值的字典。

dict = dict()
for line in file:
    line = line.split()
    if not line:
        continue
    dict[line[0]] = line[1:]

使用字典中的列表來存儲所有值。 如果詞典中還沒有列表,請首先創建一個空列表。

if not line[0] in dict:
    dict[line[0]] = []
dict[line[0]].append(line[1:])

您可能還會考慮

dict[line[0]].append(" ".join(line[1:]))

如果願意,撤消split()

在良好的IDE中進行編碼時,IDE會警告您使用dict

關於在PyCharm中遮蓋字典的警告

這意味着什么? 這意味着您已經重新定義了dict並且再也不能像以前一樣再次使用它:

再次使用字典時出錯

完整的代碼:

result = dict()
for line in ["a a", "b c", "a", "a a2"]:
    line = line.split()
    if not line:
        continue
    if not line[0] in result:
        result[line[0]] = []
    result[line[0]].append(line[1:])
print(result)

這是您想要的:

from collections import defaultdict
d = defaultdict(list)

for line in file:
    line = line.split()
    if not line:
        continue
    d[line[0]].append(line[1:])

注意:請勿將dict用作變量名(這是python關鍵字)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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