我有一个文件,其中包含一组人员分数。每个人有3个分数。我只能显示该人的最高分。但是,我无法打印到python shell,降序排名最高。例如:
grails:
web:
url:
converter: "hyphenated"
我希望它按照分数的降序排序。所以看起来应该是这样的:
class BookAuthorsController {
def index() {
}
}
到目前为止,我已创建此代码,但我不知道如何继续:
Persona 12
Personb 14
Personc 17
Persond 11

答案 0 :(得分:3)
这很简单:
from operator import itemgetter
rows = filter(None, [line.strip().split() for line in open("data", "r")])
data = [(person, int(score)) for person, score in rows]
for person, score in sorted(data, key=itemgetter(1), reverse=True):
print "{0:s} {1:d}".format(person, score)
NB:此假定您的输入数据没有错误的数据和一般垃圾。如果您的输入数据是不,那么您将需要进一步扩展它!
<强>输出:强>
$ python test_data.py
Personc 17
Personb 14
Persona 12
Persond 11
<强>更新强>
如果您的数据中包含垃圾,就像您在评论中描述的那样。
$ cat data
Persona 12 foo
Personb 14 bar
Personc 17 baz
Persond 11
然后,必须使用自定义key
稍微修改上述程序,例如:
def sortkey(row):
return int(row[1])
rows = filter(None, [line.strip().split() for line in open("data", "r")])
for row in sorted(rows, key=sortkey, reverse=True):
print "{0:s} {1:s}".format(row[0], row[1])
哪个仍会产生相同的输出:
$ python test_data.py
Personc 17
Personb 14
Persona 12
Persond 11