Python - ordenar lista tupla

 
Vista:

ordenar lista tupla

Publicado por ivan (26 intervenciones) el 05/06/2023 05:04:47
Hola , como de costumbre solicitando orientación ayuda.
Tienes una lista con información de países, esta información es el id (número que identifica al país), el nombre y la capital:
paises = [
[0, 'España', 'Madrid'],
[2, 'Alemania', 'Berlin'],
[1, 'Francia', 'Paris'],
[3, 'Italia', 'Roma']
]
Además, tienes una lista con el índice de belleza de los países, según un comentarista de un canal de viajes. Esta lista contiene el id de cada pais, junto a un float entre 0 y 1 con su índice de belleza (un país con un índice más alto se considera más bello que un país con el índice más bajo)
Nota que el índice de belleza pertenece al país con el mismo id en la lista países.
belleza = [
[2, 0.57],
[1, 0.81],
[3, 0.68],
[0, 0.62]
]
Define la función paises_bellos(paises, belleza), que recibe como parámetro la lista paises y la lista belleza. La función deberá retornar una lista de tuplas, donde cada tupla contiene el nombre de un país y su índice de belleza. Además, las tuplas de esta lista deberán estar ordenadas de país más bellos a país menos bellos. Para las listas anteriores a función deberá retornar:
[('Francia', 0.81),
('Italia', 0.68),
('España', 0.62),
('Alemania', 0.57)
]


Yo voy por este camino pero la tupla que es inmutable no logro ordenarla
for tupla in zip(paises, belleza):
nueva_tupla=(tupla[0][1],tupla[1][1])
print(nueva_tupla)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

ordenar lista tupla

Publicado por Costero (92 intervenciones) el 08/06/2023 21:23:53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def pais_belleza(paises: list, belleza: list) -> list:
    # hay que sortear para que que el zip funcione correctamente
    belleza.sort(key=lambda item: item[0])
    paises.sort(key=lambda item: item[0])
 
    lista = []
    for tupla in zip(paises, belleza):
        lista.append((tupla[0][1], tupla[1][1]))
    lista.sort(reverse=True, key=lambda item: item[1])
    return lista
 
 
paises = [
    [0, 'España', 'Madrid'],
    [2, 'Alemania', 'Berlin'],
    [1, 'Francia', 'Paris'],
    [3, 'Italia', 'Roma']
]
 
belleza = [
    [2, 0.57],
    [1, 0.81],
    [3, 0.68],
    [0, 0.62]
]
 
print(pais_belleza(paises, belleza))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ordenar lista tupla

Publicado por ivan (26 intervenciones) el 09/06/2023 16:06:03
Hola , gracias ...asi finalmente logro resolverlo ... habia utilizado diccionario , sort .....para luego armar la lista de tuplas, pero despues me quedaba primero el promedio y despues el pais y no lograba solucionarlo . gracias .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar