這是Python Epiphanies的練習。原題:設計字典的子類,其迭代器按排序順序返回鍵
設計字典的一個子類,其迭代器將返回其密鑰,如 確實快譯通,但在有序和不使用產量。
我這似乎工作的解決方案提出了:
>>> class mydict(dict):
def __iter__(self):
self.index = 0
self.sorted_keys = sorted(self.keys())
self.it = iter(self.sorted_keys)
return self
def __next__(self):
if self.index < len(self.keys()):
self.index += 1
next(self.it)
return self.sorted_keys[self.index-1]
else:
raise StopIteration
>>> d = mydict({2: 1, 4: 5, 3: 7, 1: 2})
>>> dit = iter(d)
>>> next(dit)
1
>>> next(dit)
2
>>> next(dit)
3
>>> next(dit)
4
>>> next(dit)
Traceback (most recent call last):
File "<pyshell#96>", line 1, in <module>
next(dit)
File "<pyshell#89>", line 13, in __next__
raise StopIteration
StopIteration
由於沒有提供標準答案,我只是想知道這是否是最佳答案。 謝謝。
您的代碼不起作用。 'self.it'屬性沒有做任何事情,更重要的是,你不能在同一個'mydict'上得到兩個獨立的迭代器。 – user2357112