Let's sort a list of names... in many ways
Hi, let's say we have a list of names like the following:
listofnames = ['Caputo Mariangela', 'Filomena Cortazzo', 'Tommaso Peduto', 'Filomena Rossi', 'Antonietta Russo', 'Caputo Iuliano', 'Rosalba Rubano', 'Marotta Rubano', 'Daniela Cortazzo', 'Anna Gallo', 'Nunzio Buccino', 'Maurizio Amoresano', 'Rosalba Concetta', 'Maria Isabella Luongo', 'Iuliano Mariangela', 'Derna Cimmino', 'Anna Rossi', 'Flavia Damato', 'Derna La Marca', 'Guglielmo Mariangela', 'Caruccio Mariangela', 'Regina Madaio', 'Vincenza Balzano', 'Maurizio Giorno', 'Marco Lenza', 'Domenico Tancredi', 'Ortensia Russo', 'Carlo Amoresano', 'Guglielmo De Luca', 'Annapina Califano', 'Gaetana Margiotta', 'Tommaso La Regina', 'Nevia Scarano', 'Antonietta Turriziani', 'Guglielmo Sansone', 'Antonietta Guariglia', 'Antonio Mariagrazia', 'Anella De Luca', 'Giovanni Luisa Benformato', 'Domenico Velella', 'Daniela Luongo', 'Vincenza Concetta', 'Carla Grasso', 'Angelamaria Manzo', 'Pierpaolo Passaro', 'Annalisa Starace', 'Maria Isabella Madaio', 'Pasqualina Guercio', 'Marco La Marca', 'Antonietta Passaro']
What if we want to sort them?
It's easy
>>> listofnames.sort()
['Anella De Luca', 'Angelamaria Manzo', 'Anna Gallo', 'Anna Rossi', 'Annalisa Starace', 'Annapina Califano', 'Antonietta Guariglia', 'Antonietta Passaro', 'Antonietta Russo', 'Antonietta Turriziani', 'Antonio Mariagrazia', 'Caputo Iuliano', 'Caputo Mariangela', 'Carla Grasso', 'Carlo Amoresano', 'Caruccio Mariangela', 'Daniela Cortazzo', 'Daniela Luongo', 'Derna Cimmino', 'Derna La Marca', 'Domenico Tancredi', 'Domenico Velella', 'Filomena Cortazzo', 'Filomena Rossi', 'Flavia Damato', 'Gaetana Margiotta', 'Giovanni Luisa Benformato', 'Guglielmo De Luca', 'Guglielmo Mariangela', 'Guglielmo Sansone', 'Iuliano Mariangela', 'Marco La Marca', 'Marco Lenza', 'Maria Isabella Luongo', 'Maria Isabella Madaio', 'Marotta Rubano', 'Maurizio Amoresano', 'Maurizio Giorno', 'Nevia Scarano', 'Nunzio Buccino', 'Ortensia Russo', 'Pasqualina Guercio', 'Pierpaolo Passaro', 'Regina Madaio', 'Rosalba Concetta', 'Rosalba Rubano', 'Tommaso La Regina', 'Tommaso Peduto', 'Vincenza Balzano', 'Vincenza Concetta']
But, what if we want to order by surname.
we should:
1) Cycle trought the list (for...)
2) Split the name in 2 3 4 parts (some names are made of three parts)
3) if there are 3 parts and the second part is "De" or "La" the second and third part si the surname
4) otherwise the first and the second are first and second name
------------------------- code ----------------------------------
wholename = [] # we will store here the surname + name
for names in listofnames:
splitted = names.split() # let's split the name
if len(splitted) == 3: # 2 names or a surname in 2 parts
if splitted[1] == "De" or splitted[1]== "La":
# it checks for De or La: i.e. a surname in 2 parts
# So I append to another list
# the first part of the surname + second part + name
wholename.append(splitted[1] + " " + splitted[2] + " " + splitted[0])
else:
# If the second part is not De or La ...
# put last part of the 3 part at the start
# PS: remember that lists starts from 0
wholename.append(splitted[2] + " " + splitted[0] + " " + splitted[1])
elif len(splitted) == 4: # 2 names and 2 surnames or 3 names
if splitted[2] == "De" or splitted[1]== "La": # We have 2 names and 2 surnames
wholename.append(splitted[2] + " " + splitted[3] + " " + splitted[0] + " " + splitted[1])
else:
wholename.append(splitted[3] + " " + splitted[0] + " " + splitted[1] + " " + splitted [2])
# at last, the simpliest case: 1 name and 1 surname...
else:
wholename.append(splitted[1] + " " + splitted[0])
wholename.sort()
for name in wholename:
print(wholename.index(name),")",name)
This is the output:
-------------------------
0 ) Amoresano Carlo
1 ) Amoresano Maurizio
2 ) Balzano Vincenza
3 ) Benformato Giovanni Luisa
4 ) Buccino Nunzio
5 ) Califano Annapina
6 ) Cimmino Derna
7 ) Concetta Rosalba
8 ) Concetta Vincenza
9 ) Cortazzo Daniela
10 ) Cortazzo Filomena
11 ) Damato Flavia
12 ) De Luca Anella
13 ) De Luca Guglielmo
14 ) Gallo Anna
15 ) Giorno Maurizio
16 ) Grasso Carla
17 ) Guariglia Antonietta
18 ) Guercio Pasqualina
19 ) Iuliano Caputo
20 ) La Marca Derna
21 ) La Marca Marco
22 ) La Regina Tommaso
23 ) Lenza Marco
24 ) Luongo Daniela
25 ) Luongo Maria Isabella
26 ) Madaio Maria Isabella
27 ) Madaio Regina
28 ) Manzo Angelamaria
29 ) Margiotta Gaetana
30 ) Mariagrazia Antonio
31 ) Mariangela Caputo
32 ) Mariangela Caruccio
33 ) Mariangela Guglielmo
34 ) Mariangela Iuliano
35 ) Passaro Antonietta
36 ) Passaro Pierpaolo
37 ) Peduto Tommaso
38 ) Rossi Anna
39 ) Rossi Filomena
40 ) Rubano Marotta
41 ) Rubano Rosalba
42 ) Russo Antonietta
43 ) Russo Ortensia
44 ) Sansone Guglielmo
45 ) Scarano Nevia
46 ) Starace Annalisa
47 ) Tancredi Domenico
48 ) Turriziani Antonietta
49 ) Velella Domenico
Hi, let's say we have a list of names like the following:
listofnames = ['Caputo Mariangela', 'Filomena Cortazzo', 'Tommaso Peduto', 'Filomena Rossi', 'Antonietta Russo', 'Caputo Iuliano', 'Rosalba Rubano', 'Marotta Rubano', 'Daniela Cortazzo', 'Anna Gallo', 'Nunzio Buccino', 'Maurizio Amoresano', 'Rosalba Concetta', 'Maria Isabella Luongo', 'Iuliano Mariangela', 'Derna Cimmino', 'Anna Rossi', 'Flavia Damato', 'Derna La Marca', 'Guglielmo Mariangela', 'Caruccio Mariangela', 'Regina Madaio', 'Vincenza Balzano', 'Maurizio Giorno', 'Marco Lenza', 'Domenico Tancredi', 'Ortensia Russo', 'Carlo Amoresano', 'Guglielmo De Luca', 'Annapina Califano', 'Gaetana Margiotta', 'Tommaso La Regina', 'Nevia Scarano', 'Antonietta Turriziani', 'Guglielmo Sansone', 'Antonietta Guariglia', 'Antonio Mariagrazia', 'Anella De Luca', 'Giovanni Luisa Benformato', 'Domenico Velella', 'Daniela Luongo', 'Vincenza Concetta', 'Carla Grasso', 'Angelamaria Manzo', 'Pierpaolo Passaro', 'Annalisa Starace', 'Maria Isabella Madaio', 'Pasqualina Guercio', 'Marco La Marca', 'Antonietta Passaro']
What if we want to sort them?
It's easy
>>> listofnames.sort()
['Anella De Luca', 'Angelamaria Manzo', 'Anna Gallo', 'Anna Rossi', 'Annalisa Starace', 'Annapina Califano', 'Antonietta Guariglia', 'Antonietta Passaro', 'Antonietta Russo', 'Antonietta Turriziani', 'Antonio Mariagrazia', 'Caputo Iuliano', 'Caputo Mariangela', 'Carla Grasso', 'Carlo Amoresano', 'Caruccio Mariangela', 'Daniela Cortazzo', 'Daniela Luongo', 'Derna Cimmino', 'Derna La Marca', 'Domenico Tancredi', 'Domenico Velella', 'Filomena Cortazzo', 'Filomena Rossi', 'Flavia Damato', 'Gaetana Margiotta', 'Giovanni Luisa Benformato', 'Guglielmo De Luca', 'Guglielmo Mariangela', 'Guglielmo Sansone', 'Iuliano Mariangela', 'Marco La Marca', 'Marco Lenza', 'Maria Isabella Luongo', 'Maria Isabella Madaio', 'Marotta Rubano', 'Maurizio Amoresano', 'Maurizio Giorno', 'Nevia Scarano', 'Nunzio Buccino', 'Ortensia Russo', 'Pasqualina Guercio', 'Pierpaolo Passaro', 'Regina Madaio', 'Rosalba Concetta', 'Rosalba Rubano', 'Tommaso La Regina', 'Tommaso Peduto', 'Vincenza Balzano', 'Vincenza Concetta']
But, what if we want to order by surname.
we should:
1) Cycle trought the list (for...)
2) Split the name in 2 3 4 parts (some names are made of three parts)
3) if there are 3 parts and the second part is "De" or "La" the second and third part si the surname
4) otherwise the first and the second are first and second name
------------------------- code ----------------------------------
wholename = [] # we will store here the surname + name
for names in listofnames:
splitted = names.split() # let's split the name
if len(splitted) == 3: # 2 names or a surname in 2 parts
if splitted[1] == "De" or splitted[1]== "La":
# it checks for De or La: i.e. a surname in 2 parts
# So I append to another list
# the first part of the surname + second part + name
wholename.append(splitted[1] + " " + splitted[2] + " " + splitted[0])
else:
# If the second part is not De or La ...
# put last part of the 3 part at the start
# PS: remember that lists starts from 0
wholename.append(splitted[2] + " " + splitted[0] + " " + splitted[1])
elif len(splitted) == 4: # 2 names and 2 surnames or 3 names
if splitted[2] == "De" or splitted[1]== "La": # We have 2 names and 2 surnames
wholename.append(splitted[2] + " " + splitted[3] + " " + splitted[0] + " " + splitted[1])
else:
wholename.append(splitted[3] + " " + splitted[0] + " " + splitted[1] + " " + splitted [2])
# at last, the simpliest case: 1 name and 1 surname...
else:
wholename.append(splitted[1] + " " + splitted[0])
wholename.sort()
for name in wholename:
print(wholename.index(name),")",name)
This is the output:
-------------------------
0 ) Amoresano Carlo
1 ) Amoresano Maurizio
2 ) Balzano Vincenza
3 ) Benformato Giovanni Luisa
4 ) Buccino Nunzio
5 ) Califano Annapina
6 ) Cimmino Derna
7 ) Concetta Rosalba
8 ) Concetta Vincenza
9 ) Cortazzo Daniela
10 ) Cortazzo Filomena
11 ) Damato Flavia
12 ) De Luca Anella
13 ) De Luca Guglielmo
14 ) Gallo Anna
15 ) Giorno Maurizio
16 ) Grasso Carla
17 ) Guariglia Antonietta
18 ) Guercio Pasqualina
19 ) Iuliano Caputo
20 ) La Marca Derna
21 ) La Marca Marco
22 ) La Regina Tommaso
23 ) Lenza Marco
24 ) Luongo Daniela
25 ) Luongo Maria Isabella
26 ) Madaio Maria Isabella
27 ) Madaio Regina
28 ) Manzo Angelamaria
29 ) Margiotta Gaetana
30 ) Mariagrazia Antonio
31 ) Mariangela Caputo
32 ) Mariangela Caruccio
33 ) Mariangela Guglielmo
34 ) Mariangela Iuliano
35 ) Passaro Antonietta
36 ) Passaro Pierpaolo
37 ) Peduto Tommaso
38 ) Rossi Anna
39 ) Rossi Filomena
40 ) Rubano Marotta
41 ) Rubano Rosalba
42 ) Russo Antonietta
43 ) Russo Ortensia
44 ) Sansone Guglielmo
45 ) Scarano Nevia
46 ) Starace Annalisa
47 ) Tancredi Domenico
48 ) Turriziani Antonietta
49 ) Velella Domenico
Comments
Post a Comment