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