Python iterare su un dizionario

In [26]: test = {}

In [27]: test["apple"] = "green"

In [28]: test["banana"] = "yellow"

In [29]: test["orange"] = "orange"

In [32]: for fruit, colour in test:
   ....:     print fruit
   ....:     
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/home1/users/joe.borg/<ipython-input-32-8930fa4ae2ac> in <module>()
----> 1 for fruit, colour in test:
      2     print fruit
      3 

ValueError: too many values to unpack

Quello che voglio è quello di scorrere il test e ottenere la chiave e il valore insieme. Se io solo fare un for item in test: ho la chiave.

Un esempio di obiettivo finale sarebbe:

for fruit, colour in test:
    print "The fruit %s is the colour %s" % (fruit, colour)
vedere help(dict)
Perché non for fruit in test: print "The fruit %s is the colour %s" % (fruit, test[fruit]) ?

OriginaleL’autore jdborg | 2011-12-21

3 Replies
  1. 17

    In Python 2 devi fare:

    for fruit, color in test.iteritems():
        # do stuff

    In Python 3, utilizzare items() invece (iteritems() è stata rimossa):

    for fruit, color in test.items():
        # do stuff

    Questo è coperto in il tutorial.

    In Python 3, sarà necessario modificare itemiter() per item() for fruit, color in test.items()– dal dict.iteritems() è stato rimosso e ora dict.gli articoli() fa la stessa cosa
    Grazie, ho aggiornato la risposta per chiarire che.

    OriginaleL’autore Björn Pollex

  2. 12

    Cambiare

    for fruit, colour in test:
        print "The fruit %s is the colour %s" % (fruit, colour)

    per

    for fruit, colour in test.items():
        print "The fruit %s is the colour %s" % (fruit, colour)

    o

    for fruit, colour in test.iteritems():
        print "The fruit %s is the colour %s" % (fruit, colour)

    Normalmente, se si iterare su un dizionario sarà solo il ritorno di un tasto, in modo che è il motivo per cui è errore-ed fuori dicendo “Troppi valori per scompattare”.
    Invece items o iteritems dovrebbe restituire un list of tuples di key value pair o un iterator per scorrere i key and values.

    In alternativa è sempre possibile accedere al valore via la chiave, come nell’esempio seguente

    for fruit in test:
        print "The fruit %s is the colour %s" % (fruit, test[fruit])

    OriginaleL’autore Abhijit

  3. 4

    Normale for key in mydict scorre chiavi. Si desidera scorrere elementi:

    for fruit, colour in test.iteritems():
        print "The fruit %s is the colour %s" % (fruit, colour)

    OriginaleL’autore Jochen Ritzel

Lascia un commento