Python将数据从文件导入到字典并比较

2024-06-26 16:53:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用以下代码将一些键和值从一个相对较小的文件导入到字典中

winner = {}
with open ("Scores.txt") as file:
    for line in file:
        (key, val) = line.split()
        winner[key] = val

我的文件包含以下内容:

Jeff 66
Tom 72
Aaron 34
Eva 47
Aaron 33
Jeff 36
Tom 34
Aaron 67
Tom 76

当我打印出字典时,值被具有相同键的数据覆盖。我想在不改变档案的情况下保持每个球员的最高分数。你知道吗

下面是我想做的事情的伪代码:

If the value in file > value in key:
    replace the value in key with the value in file
Else:
    Do nothing

Tags: 文件thekey代码in字典valuewith
2条回答

使用dict.getmax

winner = {}
with open ("Scores.txt") as file:
    for line in file:
        (key, value) = line.split()
        winner[key] = max(winner.get(key, 0), int(value))
print(winner)
{'Aaron': 67, 'Eva': 47, 'Jeff': 66, 'Tom': 76}

说明:

  • winner.get(key, 0):如果winner已经有了key,则返回value,否则返回0
  • max(winner.get(key, 0), int(value)):为dict的每个条目比较max

您可以收集每个键的所有值,然后取最大值,或者读取每行,获取键和值,并检查值是否高于当前值。如果是,请更换。defaultdict(int)的默认值是0,因此应该始终低于文件中的任何分数。你知道吗

from collections import defaultdict

winner = defaultdict(int)
with open ("Scores.txt") as file:
    for line in file:
        (key, val) = line.split()
        val = int(val)
        if val > winner[key]:
            winner[key] = val
print(winner)

打印defaultdict(<class 'int'>, {'Jeff': 66, 'Tom': 76, 'Aaron': 67, 'Eva': 47})

如果可能出现负分数,则使用defaultdict(lambda: -10000)(或任何其他负数,低于最低可能分数)。你知道吗

相关问题 更多 >