Ho una lista che assomiglia a questo:Python Ordinamento personalizzato funzione per una lista
['Fall 2014', 'Spring 2015', 'Fall 2008', 'Spring 2008']
E quando ordinato, l'elenco dovrebbe essere simile a questo:
['Spring 2015', 'Fall 2014', 'Spring 2008', 'Fall 2008']
Quindi, le regole per l'ordinamento sono:
F ordina per anno
Ordina per stagione, dove la primavera è la prima, quindi l'autunno.
Al momento ho una funzione chiamata lcmp
che uso nella mia lista come questa: myList.sort(lcmp)
.
>>> def lcmp(a,b):
... c = a.split()
... d = b.split()
... if(c[1]>d[1]):
... if(c[0]>d[0]):
... return 1
... else:
... return -1
... else:
... if(c[0]>d[0]):
... return 1
... else:
... return 0
...
Questo funziona per l'ordinamento per anno, ma non funziona per la stagione, anche se ho specificato che tipo di ordinamento. Perché sta succedendo?
O semplicemente sorta due volte utilizzando diverse funzioni chiave, che sembra essere raccomandato dal doc. Questo funziona perché 'sort()' è stabile ed è in grado di trarre vantaggio dalla quasi ordinanza. –
Buono, e per 'mari' forse l'indice di un iterable contiene le stagioni! – Kasramvd
@ Kasramvd, non sono sicuro che io segua? –