Empíricamente, parece que el clasificador de listas por defecto de Python, al pasar 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?¿Cómo clasifica Python una lista de tuplas?
Respuesta
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 debe devolver 1, -1, 0.
¡No use el argumento cmp si el argumento clave para ordenar lo hará! Es preferible foo.sort (clave = lambda x: x [1]) a foo.sort (lambda x, y: cmp (x [1], y [1])). Es más fácil de entender y mucho más eficiente. – cthulahoops
@cthulahoops Creo que usar 'operator.itemgetter' es en ese caso mejor que la función lambda:' foo.sort (clave = operator.itemgetter (1)) 'es mejor que' foo.sort (clave = lambda x: x [1]) '. Sin embargo, es solo mi opinión. –
Sin embargo, sería bueno tener un enlace relevante a la documentación. – gaazkam
Sí, este es el valor predeterminado. De hecho, esta es la base de la clásica expresión "DSU" (Decorate-Sort-Undecorate) en Python. Ver Code Like a Pythonista.
No, las tuplas son sequence types como cadenas. Se clasifican de la misma, mediante la comparación de 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 están allí sólo para mostrar que algo más que el primer elemento debe estar recibiendo inspeccionado.
Hm. Parece que soy una minoría ... No entiendo los resultados de mi prueba, si Python clasifica mirando solo el primer elemento en cada tupla. – unwind
Comienza con el primer elemento, pero luego se mueve. Ver la respuesta de Vasil –
Pruebe usar el método de clasificación de lista interna y pase 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 llamante para la función de comparación, no necesariamente una lambda. Sin embargo, necesita devolver -1 (menor que), 0 (igual) o 1 (mayor que).
-1: ¿Cómo funcionará esto con una lista de tuplas? Obtengo TypeError: tipo (s) de operandos no soportados para -: 'tuple' y 'tuple' –
La función lambda que se ejecutará en sort tiene que tener un argumento, que es el elemento iteratables de una serie tupla: pairs.sort (clave = par lambda: par [1]). pares.sort (clave = par lambda: par [1]) o pares.sort (clave = par lambda: par [1], par [0]) si desea tener una segunda capa de orden después de ordenar por el primer elemento . – Alex
Salida "Devin Jeanpierre" respuesta a esta pregunta sort-a-dictionary-in-python-by-the-value donde dice usar una tupla y muestra cómo para ordenar por el segundo valor
- 1. Agrupación Python tuplas lista de tuplas
- 2. ordenar una lista de tuplas en Python
- 3. Python: conversión de lista de listas a tuplas de tuplas
- 4. Python cómo reducir en una lista de tuplas?
- 5. ¿Cómo enumero() sobre una lista de tuplas en Python?
- 6. Lista de tuplas de dict en Python
- 7. Python - lista de tuplas de función/argumento
- 8. python - obtener lista de tuplas primer índice?
- 9. Python: Escribir una lista de tuplas en un archivo
- 10. Python - Grupo de resumir y una lista de tuplas
- 11. anexar tuplas a una lista
- 12. Python: actualice un valor en una lista de tuplas
- 13. ¿Cómo puedo convertir una cadena de consulta de URL en una lista de tuplas usando Python?
- 14. pitón convertir una lista en una lista de tuplas
- 15. Lista de filtrado de tuplas
- 16. vinculando a una lista de tuplas
- 17. Python: lista de tuplas en la conversión en un diccionario
- 18. Cómo invertir tuplas en Python?
- 19. ¿Cómo se clasifica con Data.Vector.Generic.Mutable?
- 20. Python - lista de conversiones de tuplas en la cadena
- 21. Ordenar Tuplas Python
- 22. Haskell lista de lista de tuplas
- 23. Ordenar una lista de tuplas en función de dos elementos
- 24. convertir la lista de tuplas en varias listas en Python
- 25. Agregar tuple a la lista de tuplas en Python
- 26. ¿Cómo clasifica .NET caracteres especiales?
- 27. ¿Cómo ordenar (lista/tupla) de listas/tuplas?
- 28. ¿Cómo combinar listas en una lista de tuplas?
- 29. ¿Cómo puedo convertir un diccionario de Python a una lista de tuplas?
- 30. manera Pythonic para hacer explotar una lista de tuplas
¿Realmente ejecutar código de ejemplo? Si es así, ¿qué viste? Por favor, publique su código de muestra. –