PDA

View Full Version : Python - ordinamento lista tuple


gabmac2
26-09-2015, 14:02
Avendo una lista di tuple del tipo :
[("stringa",valore numerico)] e volendo ordinare in modo che l' ordinamento avvenga per valore numerico, a parità tra essi, con il valore della stringa
E' possibile?
Grazie in anticipo

cdimauro
26-09-2015, 14:23
Se vuoi ordinare prima per il valore numerico, e poi per stringa, basta passare a sorted una funzione che restituisca un'altra tupla con gli elementi scambiati:
sorted(lista, key=lambda item: (item[1], item[0]))
Se invece vuoi ordinare per stringa e poi per numero, sorted funziona già così.

EDIT: sorted se vuoi ottenere una lista. Se vuoi ordinare il loco la stessa lista, usa sort.

gabmac2
26-09-2015, 16:25
def main():
a=("P3",10)
b=("P1",10)
c=("P2",10)
lis=[]
lis.append(a)
lis.append(b)
lis.append(c)
print lis
lis2=[]
lis2=sorted(lis, key=lambda item: (item[1], item[0]))
print lis2

sembra tutto ok