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