我有一个多行文本文件,我已将数据提取到列表中。
每行都有文字和数字。我想按行从最高到最低的顺序排序。
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))
答案 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
只要:
是分隔符,这将适用于所有类型的字符串。