Tôi có một đối tượng với từ điển mà tôi muốn truy cập qua __getitem__
cũng như lặp lại (chỉ giá trị, khóa không quan trọng) nhưng tôi không chắc chắn cách thực hiện.Làm cách nào để sử dụng __getitem__ và __iter__ và trả về các giá trị từ một từ điển?
Ví dụ:
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
>>>
Làm thế nào để nói nó chỉ đơn giản là trả lại object
cho từng hạng mục trong từ điển (phím không quan trọng)?
Cảm ơn - Tôi biết đó là điều dễ dàng nhưng đã có thời gian khó khăn nhất để theo dõi điều đó! Cảm kích điều đó. – thornomad
Có phải 'return self.books.itervalues ()' tốt hơn 'return return (self.books.values ())'? Tôi đã tìm ra nó là một phương pháp tiện lợi cụ thể từ điển và đã rất ngạc nhiên khi thấy rằng nó trả về một đối tượng 'dictionary-valueiterator', còn đối tượng kia trả về một' listiterator'. Tuy nhiên, kết quả cuối cùng cũng vậy. –