[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