[...]
La funzione zip fa questo:
>>> list(zip([1,2,3], ['a', 'b', 'c']))
[(1, 'a'), (2, 'b'), (3, 'c')]
Passandogli un parametro con l'* in pratica gli facciamo fare il
contrario:
>>> list(zip(*[(1, 'a'), (2, 'b'), (3, 'c')]))
[(1, 2, 3), ('a', 'b', 'c')]
Ma nel tuo caso lei fa il suo dovere, dobbiamo invece modificare il
comportamento della funzione sorted:
>>> ritardo_numeri_singoli_ordine_decrescente ,
numeri_singoli_in_ordine = zip(*sorted(zip(ritardo_numeri_singoli,
riepilogo_numeri_singoli), key=lambda x:(x[0],-x[1]), reverse=True))
>>> ritardo_numeri_singoli_ordine_decrescente
(55, 55, 53, 53, 52, 50, 49, 47, 45, 44, 41, 40, 39, 38, 34, 33,
32, 30, 29, 26, 25, 22, 22, 21, 20, 18, 13, 12, 11, 7, 6, 5, 4, 3,
2, 1, 0)
>>> numeri_singoli_in_ordine
(10, 36, 12, 32, 14, 26, 13, 11, 30, 21, 17, 24, 27, 15, 3, 23,
33, 8, 18, 22, 35, 0, 9, 29, 4, 2, 25, 16, 20, 5, 34, 19, 28, 31,
6, 7, 1)
In pratica diciamo alla funzione sorted di usare per l'ordinamento
inverso il primo numero così com'è (il ritardo) e il secondo numero
al contrario.
In alternativa potevamo dirgli di non fare l'ordine inverso e
invertire il primo, il risultato non cambia:
>>> ritardo_numeri_singoli_ordine_decrescente ,
numeri_singoli_in_ordine = zip(*sorted(zip(ritardo_numeri_singoli,
riepilogo_numeri_singoli), key=lambda x:(-x[0],x[1])))
>>> ritardo_numeri_singoli_ordine_decrescente
(55, 55, 53, 53, 52, 50, 49, 47, 45, 44, 41, 40, 39, 38, 34, 33,
32, 30, 29, 26, 25, 22, 22, 21, 20, 18, 13, 12, 11, 7, 6, 5, 4, 3,
2, 1, 0)
>>> numeri_singoli_in_ordine
(10, 36, 12, 32, 14, 26, 13, 11, 30, 21, 17, 24, 27, 15, 3, 23,
33, 8, 18, 22, 35, 0, 9, 29, 4, 2, 25, 16, 20, 5, 34, 19, 28, 31,
6, 7, 1)
Ok, confesso che è un po' complicato (le funzioni lambda sono un
pochino avanzate), però anche quello che vuoi fare tu lo è.
Ciao.
Marco.