prova a guardare qui: https://pymotw.com/2/collections/ordereddict.html Stefano
On Mon, Feb 11, 2019 at 5:19 PM Marco De Paoli <depao...@gmail.com> wrote: > 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 >
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python