当文件后面给定键的值较高时,是否替换字典中的值?

2024-06-23 18:53:31 发布

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

我是一个相当新的编码和有这个问题的麻烦-原谅我,如果我的任何一个vocab是关闭。我有一个以制表符分隔的文本文件,有多个列,如下所示

Cat    2   32
Dog    5   56
Bird    10  234
Dog  2   23
Alligator    2   94
Cat  10  34
Tiger    2   973
Bird    2   355

我想使用第一列作为键,第二列作为值。如果有一个键的重复,我希望字典在文本文件中存储最高的值。例如,我想要Cat:10Dog:5作为key:value

我打开了这个文件并创建了一个字典,其中第一列是键,第二列是值。根据Shizzen83的超级有用建议,我更新了:

animals = '/path/animals.txt'
file = open(animals, mode='r')

top_scores = dict()
for line in file :
    goodline = line.rstrip('\r\n')
    data = goodline.split("\t")
    top_scores[data[0]] = max(top_scores.setdefault(data[0], data[1]), data[1])

print(top_scores)

然后输出变为:

{'Alligator': '2', 'Tiger': '2', 'Bird': '2', 'Dog': '5', 'Cat': '2'}

然而,期望的输出是:

{'Alligator': '2', 'Tiger': '2', 'Bird': '10', 'Dog': '5', 'Cat': '10'}

任何帮助,使它保存在一个给定的密钥文件中的最高值将不胜感激


Tags: 文件data字典toplinecatfile文本文件
1条回答
网友
1楼 · 发布于 2024-06-23 18:53:31

您可以利用dictionary类的setdefault方法,它获取与键关联的值,如果找不到键,则设置一个默认值。顺便说一句,你不必检查自己是否有钥匙

animals = '/path/animals.txt'
file = open(animals, mode='r')

top_scores = dict()
for line in file :
    goodline = line.rstrip('\r\n')
    data = goodline.split("\t")
    top_scores[data[0]] = max(top_scores.setdefault(data[0], int(data[1])), int(data[1]))

相关问题 更多 >

    热门问题