这些是文本文件中的行
Sponge B - 14
Squid W - 12
Patrick S - 9
Mr K - 19
我如何做到这一点
它变成了这个: 所以最高的数字是最重要的?
Mr K - 19
Sponge B - 14
Squid W - 12
Patrick S - 9
此外,人们可能会再次进行游戏,在这种情况下,他的高分也应该更新。我如何阅读最后的数字,并用新的分数替换?
另外,如果K先生得到19,20,21我希望每次参加考试时都能达到平均水平,那么我该如何做到这一点? (在这种情况下,它将是20。)
我可以读取文件,附加并写入内容。我只是不知道如何通过阅读文件来排序文件,并将其整理出来。
答案 0 :(得分:1)
您的数据是 CSV数据。好吧,主要是因为得分由' - '
分隔。你可以很容易地回读:
with open('/tmp/d.txt', 'rt') as infile:
reader = csv.reader(infile, delimiter='-')
scores = dict((key.strip(), int(value)) for (key, value) in reader)
print(scores)
产:
{'Squid W': 12, 'Sponge B': 14, 'Mr K': 19, 'Patrick S': 9}
现在,由于您的数据存储在字典中,您可以毫无困难地更新任何分数。例如,如果您需要向Mr K
添加1个点:
scores['Mr K'] += 1
关于按值排序,您可以使用sorted()函数:
import operator
final_data = sorted(scores.items(),
key=operator.itemgetter(1),
reverse=True)
print(final_data)
导致:
[('Mr K', 20), ('Sponge B', 14), ('Squid W', 12), ('Patrick S', 9)]
您必须使用正确的格式<name> - <score>
输出每条记录。
在这里,我使用"{} - {}".format(...)
来达到这个目的:
with open('/tmp/out.txt', 'wt') as outfile:
for key,value in final_data:
outfile.write("{} - {}\n".format(key,value))