varias vacia tuplas tupla tabla ordenar listas lista leer diccionario crear anidadas alfabeticamente python

vacia - ordenar tabla python



¿Cómo clasifica Python una lista de tuplas? (5)

Empíricamente, parece que el clasificador de lista predeterminado de Python, cuando pasa una lista de tuplas, ordenará por el primer elemento en cada tupla. ¿Es eso correcto? Si no, ¿cuál es la forma correcta de ordenar una lista de tuplas por sus primeros elementos?


Clasifica automáticamente una lista de tuplas por los primeros elementos en las tuplas, luego por los segundos elementos y así sucesivamente tupla ([1,2,3]) irá antes de tupla ([1,2,4]). Si desea anular este comportamiento pase un invocable como el segundo argumento al método de ordenación. Este invocable debería devolver 1, -1, 0.


Intenta usar el método de clasificación de lista interna y pasa una lambda. Si tu primer elemento de tuplas es un entero, esto debería funcionar.

# l is the list of tuples l.sort(lambda x,y: x-y)

Puede usar cualquier llamada para la función de comparación, no necesariamente una lambda. Sin embargo, necesita devolver -1 (menor que), 0 (igual) o 1 (mayor que).



No, las tuplas son tipos de secuencia como cadenas. Se ordenan de la misma manera, al comparar cada elemento a su vez:

>>> import random >>> sorted([(0,0,0,int(random.getrandbits(4))) for x in xrange(10)]) [(0, 0, 0, 0), (0, 0, 0, 4), (0, 0, 0, 5), (0, 0, 0, 7), (0, 0, 0, 8), (0, 0, 0, 9), (0, 0, 0, 12), (0, 0, 0, 12), (0, 0, 0, 12), (0, 0, 0, 14)]

Los tres ceros solo están ahí para mostrar que se debe inspeccionar algo que no sea el primer elemento.


Sí, este es el predeterminado. De hecho, esta es la base de la clásica expresión "DSU" (Decorate-Sort-Undecorate) en Python. Ver Código como un Pythonista .