[Python] Domanda sui dizionari.

Marco De Paoli depaolim a gmail.com
Lun 11 Feb 2019 17:19:02 CET


ciao Gabriele,

Il giorno lun 11 feb 2019 alle ore 16:38 Gabriele Battaglia <
iz4apu a 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
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20190211/ad87b559/attachment.html>


Maggiori informazioni sulla lista Python