1

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

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

4

2 回答 2

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
于 2013-09-23T21:08:27.770 回答
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
于 2013-09-23T21:14:32.380 回答