Re: [Python] Domanda sui dizionari.
prova a guardare qui: https://pymotw.com/2/collections/ordereddict.html Stefano On Mon, Feb 11, 2019 at 5:19 PM Marco De Paoli 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
Re: [Python] Domanda sui dizionari.
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] Domanda sui dizionari.
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. Mi pare che, parlo di Python3, non ci sia alcun ordine, dentro ad un dizionario, quindi non posso riordinare le coppie chiave:valore. Nemmeno copiarle in un dizionario nuovo è una soluzione, perchè anche là si mescoleranno fra loro. Potrei non salvare la classifica in alcuna variabile e stamparla riga per riga, coppia per coppia, man mano che calcolo la classifica iterando sul dato di riferimento, però mi sembra una soluzione poco elegante. Voi come risolvereste? Grazie. Gabriele. -- Gabriele Battaglia, IZ4APU (Libero) Sent from TB on Windows 10, Genus Bononiae's computer. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python