ciao Gabriele, Il giorno lun 11 feb 2019 alle ore 16:38 Gabriele Battaglia < iz4...@libero.it> ha scritto:
> Ciao a tutti. > Quanto tempo! > Dunque dunque, vediamo chi, fra i sopravvissuti all'influenza, tremenda, > di quest'anno, avrà voglia di leggere la mia domanda e darmi una dritta. > > Siamo nella fase finale di un gioco ed è ora di stampare la classifica > dei vittoriosi. > > Ho un dizionario che ha questa struttura: > > giocatori= {'nome' : [ punteggio, vittorie, patte, sconfitte ] } > > Posso pertanto accedere facilmente ai dati dei singoli giocatori, ad > esempio per conoscere il numero di vittorie accumulate da Valter > interrogherò giocatori['Valter'][1] > > Il problema sorge quando devo stampare una classifica. L'utente può > decidere se la vuole basata sul punteggio piuttosto che sul numero di > vittorie, se la vuole ascendente o discendente. > FIELDS = ['nome', 'punteggio', 'vittorie', 'patte', 'sconfitte'] def output(d, field_name, reverse=False): pos = FIELDS.index(field_name) direction = "inversa " if reverse else "" flat = [(n, *v) for n, v in giocatori.items()] print(f"Classifica ordinata {direction}per {field_name}") print("\n".join(["\t".join(map(str, r)) for r in sorted(flat, key=lambda r: r[pos], reverse=reverse)])) giocatori= { 'nc' : [1, 50], 'nd' : [2, 10], 'nb' : [3, 30], 'ne' : [4, 20], 'na' : [5, 40], } output(giocatori, 'nome') output(giocatori, 'vittorie') output(giocatori, 'vittorie', True) Si avvicina a quello che avevi in mente? Marco
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python