Namen nach Nachnamen sortieren

Ein Programmierbeispiel, mit dem eine Namensliste nach Nachname sortiert wird, aufsteigend und absteigend.

 

NAMES = ['sylvester Stallone', 'BOB BELDERBOS', 'julian sequeira', 'anna netrebko', 'keanu reeves',  
         'julbob pybites', 'bob belderbos', 'Julian Sequeira', 'james woods', 'ludmilla pavlichenko', 'MATT damon']

def dedup_and_title_case_names(names):    """ Wandelt die Namen in der Liste in title-case um. """
    return list({name.title() for name in names})

def sort_by_surname_desc(names):     """ Gibt eine Liste zurück absteigend sortiert nach Nachname. """
    names = dedup_and_title_case_names(names)
    return sorted(names,                   key=lambda x: x.split()[-1],                   reverse=True)

def sort_by_surname_asc(names):     """ Gibt eine Liste zurück aufsteigend sortiert nach Nachname. """
    names = dedup_and_title_case_names_sol(names)
    return sorted(names,                   key=lambda x: x.split()[-1])

print(dedup_and_title_case_names(NAMES)) print(sort_by_surname_asc(NAMES)) print(sort_by_surname_desc(NAMES))

Ausgabe:

[‚Anna Netrebko‘, ‚Ludmilla Pavlichenko‘, ‚Keanu Reeves‘, ‚Julian Sequeira‘, ‚Bob Belderbos‘, ‚Julbob Pybites‘, ‚James Woods‘, ‚Matt Damon‘, ‚Sylvester Stallone‘]

[‚Bob Belderbos‘, ‚Matt Damon‘, ‚Anna Netrebko‘, ‚Ludmilla Pavlichenko‘, ‚Julbob Pybites‘, ‚Keanu Reeves‘, ‚Julian Sequeira‘, ‚Sylvester Stallone‘, ‚James Woods‘]
[‚James Woods‘, ‚Sylvester Stallone‘, ‚Julian Sequeira‘, ‚Keanu Reeves‘, ‚Julbob Pybites‘, ‚Ludmilla Pavlichenko‘, ‚Anna Netrebko‘, ‚Matt Damon‘, ‚Bob Belderbos‘]