怎么从文本文件中删除带有分数的重复的词语?

2024-06-16 09:30:32 发布

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

我有一个文件,下面是它看起来像一个片段。我把这些词和分数联系起来。如何删除分数较低的重复项。我的意思是'新鲜'有两个分数(7.781和5.750),我试图删除'新鲜'和其他重复的条款与较低的分数。有可能吗?你知道吗

['norwegian', 7.781341354126479]
['rp', 7.7802465301013]
['fresh', 7.7721646246757885]
['tick', 7.7721646246757885]
['wood', 7.7721646246757885]
['fresh', 5.750711529372451]
['tick', 4.750711529372451]

我试着做了以下的工作,把文件放到字典里,把单词和分数分开。你知道吗

from collections import defaultdict
d={}
last_seen=set()
with open("scored.txt","r") as filer:

     for line in filer:
            term, score= line.strip().split(",",1)
            if line not in last_seen:
                   last_seen.add(line)

Tags: 文件in字典line单词分数rp条款
1条回答
网友
1楼 · 发布于 2024-06-16 09:30:32

在文本文件中以python列表的格式存储字符串。您需要ast.literal_eval将字符串表示转换为列表。和简单的dict来存储团队的分数。尝试以下代码

import ast
d={}
with open("scored.txt","r") as filer:
     for line in filer:
            data = ast.literal_eval(line)
            team,score = data[0],data[1]
            if team not in d or d[team] < score:
                d[team] = score

更新
只将团队组件写入您可以使用的文件

with open("ofile.txt","w") as f:
    for team in d:
        f.write(team)

此代码段将以随机顺序将所有团队名称写入文件。要保持初始顺序,应该使用来自collectionsOrderedDict。你知道吗

import ast
from collections import OrderedDict
d=OrderedDict()
...
# the same code

相关问题 更多 >