我对.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
...
我非常感谢谁能帮助我/指导我
答案 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)))
答案 3 :(得分:0)
尝试一下:
for line in sorted(r, key=lambda x: int(x.split(' = ').strip())):