Python 从文本到字典,更新键

Python 从文本到字典,更新键,python,Python,我有一个这种格式的文本文件: 我使用下面的循环代码创建字典。我有一个问题,在这个文本文件中有很多重复的键,但是值不同。我的循环不会向现有键添加新值,而是完全覆盖它。因此,该键仍然是该键在文件中的最后一个值 我需要一本包含所有键及其值的字典 dict = dict() for line in file: line = line.split() if not line: continue dict[line[0]] = line[1:] 以下是您想要的: f

我有一个这种格式的文本文件:

我使用下面的循环代码创建字典。我有一个问题,在这个文本文件中有很多重复的键,但是值不同。我的循环不会向现有键添加新值,而是完全覆盖它。因此,该键仍然是该键在文件中的最后一个值

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

dict = dict()
for line in file:
    line = line.split()
    if not line:
        continue
    dict[line[0]] = line[1:]
以下是您想要的:

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关键字。

以下是您想要的:

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关键字。

使用字典中的列表存储所有值。如果字典中还没有列表,请先创建一个空列表

if not line[0] in dict:
    dict[line[0]] = []
dict[line[0]].append(line[1:])
你也可以考虑

dict[line[0]].append(" ".join(line[1:]))
如果愿意,可以撤消拆分

在良好的IDE中编码时,IDE将警告您使用dict:

这是什么意思?这意味着您已经重新定义了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)

使用字典中的列表存储所有值。如果字典中还没有列表,请先创建一个空列表

if not line[0] in dict:
    dict[line[0]] = []
dict[line[0]].append(line[1:])
你也可以考虑

dict[line[0]].append(" ".join(line[1:]))
如果愿意,可以撤消拆分

在良好的IDE中编码时,IDE将警告您使用dict:

这是什么意思?这意味着您已经重新定义了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)

dict应该如何包含所有的值?作为列表,还是加入到字符串?@tobias_k how list。嗯,dict不能包含重复的键,因此键的值必须包含多个元素,例如以列表的形式。@tobias_k yep,你是对的。我不需要包含重复的键,我只需要向现有键添加新值。dict应该如何包含所有值?作为列表,还是加入到字符串?@tobias_k how list。嗯,dict不能包含重复的键,因此键的值必须包含多个元素,例如以列表的形式。@tobias_k yep,你是对的。我不需要包含重复的键,我只需要向现有键添加新值。还应该注意,dict是python关键字,建议不要将其用作变量名。@convergabot:同意。PyCharm在这样做时警告您谢谢!但是我在这个字符串中有一个错误:dict[line[0]]。appendline[1::]-“type”对象不是subscriptable@StaxDev:哪个输入数据?请看我的完整代码listing@ThomasWeller对不起,这是我的错,我改正了我的错误。祝您有愉快的一天。还应该注意,dict是一个python关键字,建议不要将其用作变量名。@implezabot:同意。PyCharm在这样做时警告您谢谢!但是我在这个字符串中有一个错误:dict[line[0]]。appendline[1::]-“type”对象不是subscriptable@StaxDev:哪个输入数据?请看我的完整代码listing@ThomasWeller对不起,这是我的错,我改正了我的错误。祝您有个美好的一天。