Ho un oggetto con un dizionario al quale voglio accedere tramite __getitem__
oltre a scorrere (solo valori, i tasti non hanno importanza) ma non sono sicuro di come farlo.Come utilizzare __getitem__ e __iter__ e restituire valori da un dizionario?
Ad esempio:
Python 2.5.2 (r252:60911, Jul 22 2009, 15:33:10)
>>> class Library(object):
... def __init__(self):
... self.books = { 'title' : object, 'title2' : object, 'title3' : object, }
... def __getitem__(self, i):
... return self.books[i]
...
>>> library = Library()
>>> library['title']
<type 'object'>
>>> for book in library:
... print book
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in __getitem__
KeyError: 0
>>>
Come faccio a dire che per tornare semplicemente la object
per ogni voce nel dizionario (la chiave non importa)?
Grazie - Sapevo che era qualcosa di semplice ma stavo avendo il momento più difficile rintracciarlo! Apprezzalo. – thornomad
È 'return self.books.itervalues ()' meglio di 'return iter (self.books.values ())'? Ho pensato che fosse un metodo di convenienza specifico del dizionario e sono rimasto sorpreso nel constatare che restituisce un oggetto 'dizionario-valueiterator', mentre l'altro restituisce un' listiterator'. Lo stesso risultato finale, però. –