Programa de Python para ordenar una lista de nombres por apellido

Dada una lista de nombres, la tarea es escribir un programa Python para ordenar la lista de nombres por su apellido.

Ejemplos:

Entrada: [‘John Wick’, ‘Jason Voorhees’]

Salida: [‘Jason Voorhees’, ‘John Wick’]

Explicación: V en Voorhees de Jason Voorhees es menor que W en Wick de John Wick. 

Entrada: [‘Freddy Krueger’, ‘Keyser Söze’, ‘Mohinder Singh Pandher’]

Salida: [‘Freddy Krueger’, ‘Mohinder Singh Pandher’, ‘Keyser Soze’]

Explicación: K< P < S

Método n.º 1: uso del método sorted() en una lista 2D convertida .

Convierta la lista de nombres en una lista de nombres 2D, en la que el primer índice se refiere a los nombres y el último índice se refiere al apellido. Aplique el método sorted() con clave como el último índice de cada elemento en la lista 2D.

Python3

# explicit function sort names
# by their surnames
def sortSur(nameList):
    l2 = []
 
    # create 2d list of names
    for ele in nameList:
        l2.append(ele.split())
    nameList = []
 
    # sort by last name
    for ele in sorted(l2, key=lambda x: x[-1]):
        nameList.append(' '.join(ele))
 
    # return sorted list
    return nameList
 
 
# Driver Code
 
# assign list of names
nameList = ['John Wick', 'Jason Voorhees',
            'Freddy Krueger', 'Keyser Soze',
            'Mohinder Singh Pandher']
 
# display original list
print('\nList of Names:\n', nameList)
print('\nAfter sorting:\n', sortSur(nameList))

Producción:

Lista de nombres: [‘John Wick’, ‘Jason Voorhees’, ‘Freddy Krueger’, ‘Keyser Soze’, ‘Mohinder Singh Pandher’] Después de clasificar: [‘Freddy Krueger’, ‘Mohinder Singh Pandher’, ‘Keyser Soze’ , ‘Jason Voorhees’, ‘John Wick’]

Complejidad de tiempo: O(n)

Complejidad espacial: O(n)

Método #2: Usando el método sort() + lambda

Use el método sort() en la lista dada de nombres con clave como lambda x: x.split()[-1]) que representa la última string en cada elemento de la lista.

Python3

# explicit function sort names
# by their surnames
def sortSur(nameList):
     
    # sort list by last name
    nameList.sort(key=lambda x: x.split()[-1])
     
    # return sorted list
    return nameList
 
 
# Driver Code
 
# assign list of names
nameList = ['John Wick', 'Jason Voorhees',
            'Freddy Krueger', 'Keyser Soze',
            'Mohinder Singh Pandher']
 
# display original list
print('\nList of Names:\n', nameList)
print('\nAfter sorting:\n', sortSur(nameList))

Producción:

Lista de nombres: [‘John Wick’, ‘Jason Voorhees’, ‘Freddy Krueger’, ‘Keyser Soze’, ‘Mohinder Singh Pandher’] Después de clasificar: [‘Freddy Krueger’, ‘Mohinder Singh Pandher’, ‘Keyser Soze’ , ‘Jason Voorhees’, ‘John Wick’]

Complejidad de tiempo: O (nlogn) -> La función de clasificación incorporada de Python toma O (nlogn)

Complejidad espacial: O(n)

Publicación traducida automáticamente

Artículo escrito por riturajsaha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *