Python:如何按降序排列列表元素?

时间:2013-10-29 17:06:26

标签: python sorting file-io python-3.x

如果我在这里有这个代码:

myfile = open("chess.txt", 'r')

line = myfile.readline().rstrip('\n')
while line != '':
    print(line.rstrip('\n'))
    line = myfile.readline().rstrip('\n')

myfile.close()

并打印出来:

1692 The Rickster
2875 Gary Kasparov
1692 Bobby Fisher
1235 Ben Dover
0785 Chuck Roast
1010 Jim Naysium
0834 Baba Wawa
1616 Bruce Lee
0123 K. T. Frog
2000 Socrates

我需要用什么来按从高到低(数字)的顺序排列它们?

myfile是放在记事本上的姓名和号码列表。

2 个答案:

答案 0 :(得分:2)

将您的行读入元组列表,将分数转换为整数,以便于按数字排序,然后对列表进行排序:

entries = []

with open('chess.txt') as chessfile:
    for line in chessfile:
        score, name = line.strip().split(' ', 1)
        entries.append((int(score), name))

entries.sort(reverse=True)

那就是说,你的线条,前面有0 - 填充整数,也会按字典顺序排序:

with open('chess.txt') as chessfile:
    entries = list(chessfile)

entries.sort(reverse=True)

答案 1 :(得分:0)

即使数字不是0填充,此版本也能正常工作。

为避免必须将密钥添加到行上,请使用sorted的“key”参数:

with open('/tmp/chess.txt') as chessfile:
     print ''.join(sorted(chessfile, reverse=True,
                          key=lambda k: int(k.split()[0])))