所以我已经将文本文件导入python。该文件是存储用户名和分数的数据库。它目前的打印格式与原始文件几乎相同。我将每一行分为两部分:名称和分数。我已设法按字母顺序对数据进行排序,现在我正在尝试从最高到最低排序,但不知道如何?
file = open("classj.txt")
classj = (file.readlines())
for line in sorted(classj):
classj = (line.rstrip())
classa = (classj.split("-"))
score = (classa[1])
name = (classa[0])
print(name,"-",score)
输出:
EMILY - 7
JEMMA - 9
LEO - 6
MARCO - 8
RILEY - 5
如何使代码对文件进行排序以便首先显示最高分(JEMMA),最后显示最低分(RILEY)?
答案 0 :(得分:1)
将数据作为元组放在列表中。然后按分数降序排列。
file = open("classj.txt")
classj = (file.readlines())
s = []
for line in sorted(classj):
classj = (line.rstrip())
classa = (classj.split("-"))
score = int(classa[1])
name = (classa[0])
s.append( (name,score) )
s.sort(reverse=True, key=lambda x:x[1])
for x in s:
print(x[0],"-",x[1])
答案 1 :(得分:0)
首先,您可以创建文件中所有名称/分数对的元组列表(名称,分数)。然后,您可以对列表使用sorted()函数:
import operator
ns_pairs = {"Emily": 7, "Jemma": 9, "Leo": 6, "Marco":8, "Riley": 5}
sorted_ns_pairs = sorted(ns_pairs.items(), key=operator.itemgetter(1), reverse=True)
这是预定义列表中的示例。您显然希望通过将文件中的名称/分数读入列表来创建列表(如ns_pairs)。希望这有帮助!
答案 2 :(得分:0)
使用[x.strip().split('-') for x in open("classj.txt")]
构建列表的名称和分数对,并按降序对其进行排序。
from operator import itemgetter
for name,score in sorted((x.strip().split('-') for x in open("classj.txt")),key=itemgetter(1),reverse=True):
print(name + '-' + score)