Re: [Python] Problemi con modulo time e dizionari
On 08/19/2013 03:04 PM, Massimo Capanni wrote: Mi sono scritto così una funzione per calcolare il valore massimo in un dizionario (forse ci sono altri metodi, ma al momento ho reinventato la ruota per esercizio ...) def max_dict(d): v_max = 0 k_max = 0 for i in d.keys(): if d[i] > v_max: v_max = d[i] k_max = i return k_max, v_max Puoi semplicemente usare max(): >>> d = {1: 'uno', 3: 'tre', 2: 'due', 8: 'otto'} >>> max(d), d[max(d)] (8, 'otto') Se non sono numeri ma stringhe che rappresentano numeri, usa ancora max(), passando il tipo come chiave di conversione: >>> d = {'1.22': 'uno.22', '10.33': 'dieci.33', '9.0': 'nove.0'} >>> max(d) '9.0' >>> max(d, key=float) '10.33' Se ti serve un criterio di confronto diverso, puoi usare ancora max(): >>> max(d, key=lambda seq: seq[-2]) '10.33' Purtroppo mi sono reso conto che dopo l'elaborazione dei dati nella funzione max_dict(), i valori relativi alla data e ora sono completamente sballati, come se max_dict() operasse qualche modifica. Così invece di ottenere data e ora di oggi ottengo: 2003115192256 1018.6 MB 2003115192256 1018.6 MB 2003115192256 1018.6 MB 2003115192256 1018.6 MB 2003115192256 1018.6 MB 200311785544 1018.7 MB 200311785544 1018.7 MB 2006730161944 1.1 GB 2006730161944 1.1 GB Dove sto sbagliando secondo voi? Non mi pare il problema sia in max_dict(), se non per cio' che ti hanno gia' detto. Puoi postare il resto del codice? -- Marco Buttu INAF Osservatorio Astronomico di Cagliari Loc. Poggio dei Pini, Strada 54 - 09012 Capoterra (CA) - Italy Phone: +39 070 71180255 Email: mbu...@oa-cagliari.inaf.it ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Problemi con modulo time e dizionari
2013/8/19 Massimo Capanni > le chiavi del dizionario sono i valori ritornati da time.time() > dubbio: non è che l'interprete si incasina con valori float quando sono > usati come chiavi? ... > Per cortesia, cerca di non top-quotare. Non muore nessuno, lo so, ma mi infastidisce. E a te costa poco. Ad ogni modo non hai letto con attenzione quanto ho scritto. Il problema è la riga con cui compari i valori: if d[i] > v_max: Se sono stringhe, non puoi confrontarle pensando che Python capisca cosa volevi dire. Infatti: >>> "un milione" > "un miliardo" True Meglio di così non so spiegartelo. Fai tu un po' di fatica adesso :-) Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Problemi con modulo time e dizionari
le chiavi del dizionario sono i valori ritornati da time.time() dubbio: non è che l'interprete si incasina con valori float quando sono usati come chiavi? ... Il giorno 19 agosto 2013 15:09, Marco Beri ha scritto: > 2013/8/19 Massimo Capanni > >> Dove sto sbagliando secondo voi? >> > > Escludo che la funzione cambi i valori. > > Non è che stai paragonando tra di loro delle stringhe? > > >>> "1018.6 MB" > "1.1 GB" > True > > Ciao. > Marco. > > -- > http://beri.it/ - Un blog > http://beri.it/i-miei-libri/ - Qualche libro > > > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > > ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Problemi con modulo time e dizionari
2013/8/19 Massimo Capanni > Dove sto sbagliando secondo voi? > Escludo che la funzione cambi i valori. Non è che stai paragonando tra di loro delle stringhe? >>> "1018.6 MB" > "1.1 GB" True Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python