这里我有一个函数,当我读到时,只返回最后一行。我做错了什么?
def read():
with open("text.txt","r") as text:
return dict(line.strip().split() for line in text)
文本文件非常简单,有两列
asd 209
asd 441
asd 811
asd 160
asd 158
我想把所有时间都读到字典中,asd
部分作为键,数字作为值。
答案 0 :(得分:6)
字典键必须是唯一的。您在该文件中只有一个唯一键。
您实际上是在为同一个键分配不同的值,并且只有最后一个值可见,因为之前的值被覆盖:
>>> d = {}
>>> d['asd'] = 209
>>> d['asd'] = 441
>>> d
{'asd': 441}
要存储最大值,请使用:
def read():
res = {}
with open("text.txt","r") as text:
for line in text:
key, value = line.split()
if int(value) > res.get(key, -1):
res[key] = int(value)
return res
答案 1 :(得分:0)
要将值附加到每个字典键的列表中,您可以使用defaultdict
from collections import defaultdict
def read():
result = defaultdict(list)
with open("text.txt","r") as text:
for line in text:
key, value = line.strip().split()
result[key].append(value)
return result