我有一个文件,下面是它的样子片段。我有这些单词和相关的分数。如何删除分数较低的重复项。我的意思是' fresh'有两个分数(7.781和5.750),我试图删除' fresh'和其他较低分数的重复术语。有可能吗?
['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)
答案 0 :(得分:3)
在你的文本文件中以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
UPDATE
要仅将团队组件写入文件,您可以使用
with open("ofile.txt","w") as f:
for team in d:
f.write(team)
此片段会以随机顺序将所有团队名称写入文件。要保留初始订单,您应该使用OrderedDict
中的collections
。
import ast
from collections import OrderedDict
d=OrderedDict()
...
# the same code