Supongamos que tengo una lista de tuplas:Python: condicionalmente eliminar elementos de la lista
x = [(1,2), (3,4), (7,4), (5,4)]
De todas las tuplas que comparten el segundo elemento, quiero preservar la tupla con el mayor primer elemento:
y = [(1,2), (7,4)]
¿Cuál es la mejor manera de lograr esto en Python?
Gracias por las respuestas.
- Las tuplas podrían ser listas de dos elementos en su lugar, si eso hace la diferencia.
- Todos los elementos son enteros no negativos.
- Me gustan las respuestas actuales. Realmente debería aprender más sobre lo que
collections
tiene para ofrecer.
¿Necesita mantener el orden de las tuplas; es decir, si el original es '[(a, b), (x, y)]', entonces la salida debe tener '[(a, b), (x, y)]' como el orden, o es ' [(x, y), (a, b)] 'aceptable? ¿Necesitas retener el orden de los enteros dentro de las tuplas? es decir, es '[(b, a), (y, x)]' aceptable? – gotgenes
Debe conservarse el orden dentro de tuplas. El orden entre las tuplas en la lista debe conservarse, pero pueden ordenarse fácilmente usando 'y.sort()' que operará en el primer elemento de cada tupla. –
@Steve Creo que su afirmación de que el orden de aparición de las tuplas en la lista se conserva contradice al declarar que también pueden ordenarse usando 'sort()', a menos que exista una suposición no declarada en su pregunta de que la lista de entrada está ordenada por primer elemento de las tuplas. – gotgenes