首页 > 解决方案 > 从文本到字典,更新键

问题描述

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

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:]

标签: python

解决方案


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

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 阴影的警告

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

推荐阅读