读取从文本文件到字典python的所有行

时间:2013-09-23 21:07:46

标签: python file dictionary

这里我有一个函数,当我读到时,只返回最后一行。我做错了什么?

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部分作为键,数字作为值。

2 个答案:

答案 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