Manera de Pythonic para ordenar una lista de números separados por comas

Entrada de muestra

20, 71146620 100, 26867616 10, 02513583 10, 52811698 100, 23859051 

Lo leí desde un archivo como un argumento de línea de comando a una lista con

 lin = [i.strip() for i in open(sys.argv[1]).readlines()] 

esa lista se parece a ['20, 71146620', '100, 26867616', '10, 02513583', '10, 52811698', '100, 23859051']

Mi esperanza es encontrar la forma más pirónica de ordenar esta lista, primero para el primer valor y luego para el segundo para que se vea como:

['10, 02513583', '10, 52811698', '20, 71146620', '100, 23859051', '100, 26867616', ]

Actualmente estoy intentando convertirlo en una lista de pares de valores clave, pero no estoy seguro de que sea la dirección correcta a seguir.

Lo más fácil de hacer es analizar los pares en listas y luego ordenarlos:

 lin = [i.strip().split(', ') for i in open(sys.argv[1]).readlines()] lin = sorted(lin) 

En caso de que desee ordenar numéricamente, simplemente convierta a números:

 lin = [map(int, i.strip().split(', ')) for i in open(sys.argv[1]).readlines()] lin = sorted(lin) 
 import sys with open(sys.argv[1]) as f: lin = sorted([[int(j) for j in i.split(",")] for i in f]) print lin 

Puedes ordenar las líneas como cadenas, usando una función de tecla

 def two_ints(s): return map(int, s.split(",")) with open("num.txt") as f: for line in sorted(f, key=two_ints): print line 

Realmente depende de si desea que el resultado sea una lista de cadenas o una lista de listas de caracteres.

Una vez que se haya convertido a int, no hay forma de recuperar el cero inicial en “02513583”, por lo que es preferible dejar el resultado como cadenas

¿por qué no solo usar el módulo csv y alimentarlo para ordenar (con una cadena de conversión de entero)?

 import csv with open("test.csv") as f: cr = csv.reader(f) result = sorted(list(map(int,row)) for row in cr) 

Salir:

 >>> result [[10, 2513583], [10, 52811698], [20, 71146620], [100, 23859051], [100, 26867616]] 

sort hace exactamente lo que se solicita aquí: utiliza el orden natural de clasificación de las listas