我有一個對象,我想通過__getitem__
以及迭代(僅值,鍵無關緊要)訪問字典,但我不知道如何去做。如何使用__getitem__和__iter__並從字典中返回值?
例如:
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
>>>
我怎麼告訴它簡單地返回object
每個項目的字典(關鍵並不重要)?
謝謝 - 我知道這件事很容易,但最難追蹤的是時間!欣賞它。 – thornomad 2009-11-23 00:42:41
返回self.books.itervalues()比返回iter(self.books.values())更好嗎?我覺得這是一個字典特定的便利方法,並且很驚訝地發現它返回一個'dictionary-valueiterator'對象,而另一個返回'listiterator'。不過,同樣的結果。 – 2014-12-02 20:12:49