python - 从文本到字典,更新键
问题描述
我有一个这种格式的文本文件:
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
:
这意味着什么?这意味着你已经重新定义了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)
推荐阅读
- android - 如何使用 mvvm 模式显示警报对话框
- azure - 将数据从流分析输出到 powerbi 时被覆盖的数据
- facebook - Facebook Marketing API 广告_管理评论
- r - 需要在 R 编程中使用正则表达式清理我的字符串
- linux - 源代码中的 SDL2 未找到任何视频驱动程序
- javascript - Angular 6 存储会话数据
- c# - 使用 Exchange Web 服务从 EmailMessage 中删除附件
- java - 春季批量重启作业从初始阶段开始,而不是从中断的地方开始?
- sql-server - 查询产生三个不同的结果集而不是一个
- jhipster - 如何在 jhipster 中正确保护我的休息端点?