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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a