按元素排序txt列表

时间:2020-04-30 18:39:16

标签: python sorting

我对.txt列表有疑问, 该列表包含下一个:

Numero de permutaciones de la forma (2,4,3) = 1260
Numero de permutaciones de la forma (7,2,0) = 36
Numero de permutaciones de la forma (5,3,1) = 504
Numero de permutaciones de la forma (4,5,0) = 126
Numero de permutaciones de la forma (1,8,0) = 9
Numero de permutaciones de la forma (0,7,2) = 36
Numero de permutaciones de la forma (0,6,3) = 84
...

我的代码是这样的:

with open('resultado_lista_original2.txt', 'r') as r:
    for line in sorted(r):
        print(line,end='')

但是我需要按“ =“旁边的元素来对列表进行排序,以获得此顺序

Numero de permutaciones de la forma (1,8,0) = 9
Numero de permutaciones de la forma (0,7,2) = 36
Numero de permutaciones de la forma (7,2,0) = 36
Numero de permutaciones de la forma (0,6,3) = 84
Numero de permutaciones de la forma (4,5,0) = 126
Numero de permutaciones de la forma (5,3,1) = 504
Numero de permutaciones de la forma (2,4,3) = 1260
...

我非常感谢谁能帮助我/指导我

4 个答案:

答案 0 :(得分:3)

传入key参数来决定如何对可迭代对象进行排序。大多数人使用lambda函数执行此操作:

for line in sorted(r, key=lambda x: int(x.split('=')[1])):

或者,如果您希望自己定义函数:

def sort_my_txt_lines(line):
    digits_after_equal_sign = line.split('=')[1]
    return int(digits_after_equal_sign)

# ...
    for line in sorted(r, key=sort_my_txt_lines):

如果您不习惯使用key函数进行排序,请这样考虑:在尝试对输入序列进行排序时,仅查看{{1 }}符号(函数的返回值)每行的 (函数的输入参数)。

答案 1 :(得分:1)

sorted方法具有一个属性键,您可以在其中放置一个lambda或将与您要排序的列表的每个项目一起调用的方法。

结果将用于对列表进行排序,而不是对项目本身进行排序。

答案 2 :(得分:1)

最新答案,但您也可以使用:

import re
with open("input.txt")as f:
  s = sorted(f, key=lambda x:int(re.search(r"(\d+)$", x).group(1)))

Demo

答案 3 :(得分:0)

尝试一下:

    for line in sorted(r, key=lambda x: int(x.split(' = ').strip())):