Python - ordenar alfabeticamente en python

 
Vista:

ordenar alfabeticamente en python

Publicado por Ivan (26 intervenciones) el 15/05/2023 01:20:30
Hola . Necesito orientación para resolver este ejercicio. En el foro del curso no me contestan y estoy frenado ahi . Uso append y luego el sort , pero me ordena a partir del nombre y no del apellido . Use join y luego reversed pero despues no logro volver a el ordenamiento de la lista....No es mi idea que me hagan el ejercicio ,,,, orientarme o explicarme de que manera....GRACIAS


Tienes una lista con los nombres y apellidos de estudiantes de un curso, ordenados alfabéticamente por apellido y luego por nombre:
estudiantes = [
'Mario Avedaño',
'Policarpo Avedaño',
'Juan Bodoque',
'Juanin Harry',
'Mario Hugo',
'Dylan Manguera',
'Eusebio Manguera'
]
Deberás definir la función agregar_estudiante(lista, estudiante), la cual recibe como parámetro una lista en el formato anterior y el nombre de un nuevo estudiante. La función deberá agregar al estudiante en la posición correcta (ordenado alfabéticamente por apellido y nombre) de la lista y luego retornar la lista. Por ejemplo, si en la lista anterior se agrega el estudiante 'Eliza Manguera', entonces tu función deberá retornar:

['Mario Avedaño',
'Policarpo Avedaño',
'Juan Bodoque',
'Juanin Harry',
'Mario Hugo',
'Dylan Manguera',
'Eliza Manguera',
'Eusebio Manguera'
]
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 alfabeticamente en python

Publicado por Costero (92 intervenciones) el 15/05/2023 21:58:35
Quizas asi.
La primera version la funcion no necesita retornar la lista. Es cambiado in place.

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def sort_by(elem: str) -> str:
    return elem.split(" ")[1]
 
 
def agregar_estudiante(lista, estudiante):
    estudiantes.append(estudiante)
    estudiantes.sort()
    estudiantes.sort(key=sort_by)
 
   # pero si quieres retornar ...
   # return lista
 
 
def agregar_estudiante2(lista, estudiante):
    estudiantes.append(estudiante)
    estudiantes.sort()
    new_list = sorted(estudiantes, key=sort_by)
    return new_list
 
 
estudiantes = [
    'Mario Avedaño',
    'Policarpo Avedaño',
    'Juan Bodoque',
    'Juanin Harry',
    'Mario Hugo',
    'Dylan Manguera',
    'Eusebio Manguera'
]
 
print(estudiantes)
agregar_estudiante(estudiantes, 'Eliza Manguera')
print(f'Sorted by last name then first name 1: {estudiantes}')
 
 
estudiantes = [
    'Mario Avedaño',
    'Policarpo Avedaño',
    'Juan Bodoque',
    'Juanin Harry',
    'Mario Hugo',
    'Dylan Manguera',
    'Eusebio Manguera'
]
 
sorted_list = agregar_estudiante2(estudiantes, 'Eliza Manguera')
print(print(f'Sorted by last name then first name 2: {sorted_list}'))
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 alfabeticamente en python

Publicado por Costero (92 intervenciones) el 16/05/2023 01:19:13
Version correcta:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def sort_by(elem: str) -> str:
    return elem.split(" ")[1]
 
 
def agregar_estudiante(estudiantes_in: list, estudiante: str):
    estudiantes_in.append(estudiante)
    estudiantes_in.sort()
    estudiantes_in.sort(key=sort_by)
 
    # pero si quieres retornar ...
    # return estudiantes_in
 
 
def agregar_estudiante2(estudiantes_in: list, estudiante: str) -> list:
    estudiantes_in.append(estudiante)
    estudiantes_in.sort()
    new_list = sorted(estudiantes_in, key=sort_by)
    return new_list
 
 
estudiantes = [
    'Mario Avedaño',
    'Policarpo Avedaño',
    'Juan Bodoque',
    'Juanin Harry',
    'Mario Hugo',
    'Dylan Manguera',
    'Eusebio Manguera'
]
 
print(estudiantes)
agregar_estudiante(estudiantes, 'Eliza Manguera')
print(f'Sorted by last name then first name 1: {estudiantes}')
 
 
estudiantes = [
    'Mario Avedaño',
    'Policarpo Avedaño',
    'Juan Bodoque',
    'Juanin Harry',
    'Mario Hugo',
    'Dylan Manguera',
    'Eusebio Manguera'
]
 
sorted_list = agregar_estudiante2(estudiantes, 'Eliza Manguera')
print(print(f'Sorted by last name then first name 2: {sorted_list}'))
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 alfabeticamente en python

Publicado por ingjagnava8 (1 intervención) el 05/09/2023 23:37:49
Hola, yo también estoy tomando el mismo curso.
Llegué a éste ejercicio y lo resolví de la siguiente manera, muy de principiante todavía y sin usar cosas avanzadas que aún no hemos visto en el programa.
Para que pruebes el código, descomenta todo primero y arregla la indentación. Funciona con cualquier nombre y apellido.
Espero comentarios.



#def agregar_estudiante(lista, estudiante):
# nombres1 = []
# apellidos1 = []
# estudiantes2 = []

# #print(lista)

# if estudiante != "" or estudiante != " ":
# lista.append(estudiante)
# #print(lista)

# for nombre in lista:
# nombres1.append(nombre.split()[0])
# #print(nombres1)

# for apellido in lista:
# apellidos1.append(apellido.split()[1])
# #print(apellidos1)

# for i in range(len(lista)):
# estudiantes2.append(f"{apellidos1[i]} {nombres1[i]}")
# i +=1
# estudiantes2.sort()
# #print(estudiantes2)

# nombres2 = []
# apellidos2 = []
# estudiantes3 = []

# for nombre in estudiantes2:
# nombres2.append(nombre.split()[1])
# #print(nombres2)

# for apellido in estudiantes2:
# apellidos2.append(apellido.split()[0])
# #print(apellidos2)

# #estudiantes.clear()
# for k in range(len(estudiantes2)):
# estudiantes3.append(f"{nombres2[k]} {apellidos2[k]}")
# k += 1
# #print(estudiantes3)
# return estudiantes3

# estudiantes = ['Mario Avendaño',
# 'Policarpio Avendaño',
# 'Juan Bodoque',
# 'Juanin Harry',
# 'Mario Hugo',
# 'Dylan Manguera',
# 'Eusebio Manguera',
# ]
# lista = estudiantes


# agregar_estudiante(lista, "Eliza Manguera")
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