
Untitled
By: a guest on
Jul 31st, 2012 | syntax:
None | size: 0.80 KB | hits: 14 | expires: Never
How to order these lines for a highscore table in Python
('bob', '10')
('Ben', '10')
('Ben', '9')
('Ben', '8')
('Ben', '2')
('Ben', '6')
('Ben', '5')
('Ben', '5')
('Ben', '3')
('Ben', '2')
import ast
from operator import itemgetter
def parse_item(s):
name, score = ast.literal_eval(s)
return name, int(score)
with open("infile", "r") as infile:
items = [parse_item(line.strip()) for line in infile]
for item in sorted(items, key=itemgetter(1), reverse=True):
print item
print ''.join(sorted(open('infile'), key=lambda l: -int(ast.literal_eval(l)[1]))),
sorted(l, key=lambda(name,score):int(score), reverse=True)
class Highscore:
def __init__(self, name, score):
self.name = name
self.score = score
def __cmp__(self, other):
return -cmp(self.score, other.score)