Python:按字符串列表中的数字排序?

时间:2016-03-15 22:52:35

标签: python

我有一个多行文本文件,我已将数据提取到列表中。

每行都有文字和数字。我想按行从最高到最低的顺序排序。

IE

chris: 12
dave: 3
phil: 19

进入

['phill: 19', 'chris: 12', 'dave': 3]

这是我到目前为止所拥有的:

def highest_score():
    values = []
    order = []

    for line in open('my_file.txt'):
        values.append(line.rstrip())

    for line in values:
        order.append([int(s) for s in line.split() if s.isdigit()])

    print(sorted(order, reverse=True))

2 个答案:

答案 0 :(得分:2)

你可以使用lambda函数来分割字符串(假设数字总是在空格之后。如果没有,你可以使用你认为可行的正则表达式。)

我还假设你在问题中输了一个拼写错误:

['phill: 19', 'chris: 12', 'dave': 3]

应该是这样的:

['phill: 19', 'chris: 12', 'dave: 3']

使用lambda进行排序的代码示例:

my_list = ['phill: 19', 'chris: 12', 'dave: 33']

sorted_list = sorted(my_list, key=lambda x: int(x.split()[1]), reverse=True)

答案 1 :(得分:1)

那样做:

def highest_score():

    with open('my_file.txt') as myfile:
        values = myfile.readlines()

    values.sort(key=lambda s: int(s.split(':')[1].strip()), reverse=True)

    return values

只要:是分隔符,这将适用于所有类型的字符串。