es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo lo soluciono?

Actualmente estoy tratando de resolver un problema que implica listas y ordenamiento (es decir), cuando se ingresa una lista (no una normal, sino una lista de tuplas); el programa debería imprimir la lista, pero de manera ordenada (en orden creciente) basado en el segundo elemento de cada tupla.
ejemplo:
Lista de ejemplo: [(2, 5), (1, 2), (4, 4), (2, 3), (2, 1)]
Resultado esperado: [(2, 1), (1, 2), (2, 3), (4, 4), (2, 5)]
Aquí es lo que he intentado hasta ahora:

def sorting(L):
le = len(L)
G = []
Lnew = [list(l) para l in L]
para i en rango(le):
G.append(Lnew[i][1])
G.sort()
Lnew.remove(Lnew[i][1]) #donde está el problema
para k en rango(len(G)):
Lnew[k][1] = G[k]
for elt en Lnew:
tuple(elt)
return L

Muestra un error “list.remove(x): x no está en la lista”.
¿Cómo debo proceder en ese caso? ¿O hay una forma más sencilla de abordar el problema?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes probar usando la función sorted() para ordenar la lista de tuplas. Esta función toma una lista de tuplas y devuelve una nueva lista de tuplas ordenadas por el segundo elemento en cada tupla.

    Por ejemplo:

    sample_list = [(2, 5), (1, 2), (4, 4), (2, 3), (2, 1)]
    
    sortedlist = sorted(samplelist, key=lambda x: x[1])
    
    print(sorted_list)
    
    Output: [(2, 1), (1, 2), (2, 3), (4, 4), (2, 5)]
    
    

    Este enfoque es más simple y eficiente que tu enfoque actual.

Comments are closed.