[Python] Lista dizionari
Daniele Varrazzo
piro a develer.com
Ven 15 Giu 2012 13:29:09 CEST
On Fri, 15 Jun 2012 11:39:13 +0100 (BST), Walter Valenti wrote:
> Correzione dalla mail precedente senza titolo:
>
>
>
> Ho il seguente problema:
>
> una lista dizionari siffati:
> tabella{path,cfile}
> Nella lista il valore della chiave "path" può essere ripetuto n
> volte.
> Come faccio a tirate fuori nella maniera più efficiente possibile
> (!!!) tutte le
> coppie <path,cfile>
> per un dato valore della chiave di path ?
Come ti hanno detto in molti, puoi avere solo chiavi singole in un
dizionario. Ma puoi avere valori multipli se li metti in una lista. Il
modo più idiomatico credo sia questo:
In [1]: from collections import defaultdict
In [4]: d = defaultdict(list)
In [5]: d['foo'].append(10)
In [6]: d['foo'].append(20)
In [7]: d['bar'].append(30)
In [8]: d
Out[8]: defaultdict(<type 'list'>, {'foo': [10, 20], 'bar': [30]})
Puoi iterare facilmente su chiavi e valori:
In [10]: for k, v in d.iteritems():
for x in v:
print k, x
....:
....:
foo 10
foo 20
bar 30
Puoi tirare fuori tutti i valori per una chiave ripetuta:
In [9]: d['foo']
Out[9]: [10, 20]
O solo il primo se sei assumi ce ne sia solo uno:
In [10]: d['bar'][0]
Out[10]: 30
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python