[Python] Problemi con modulo time e dizionari

Marco Buttu mbuttu a oa-cagliari.inaf.it
Lun 19 Ago 2013 19:40:34 CEST


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: mbuttu a oa-cagliari.inaf.it

-------------- parte successiva --------------
Un allegato HTML č stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130819/d4233112/attachment-0001.html>


Maggiori informazioni sulla lista Python