1
>>> d = {'m': 'mango', 'f': 'fish', 'a': 'apple'}
>>> d
{'m': 'mango', 'f': 'fish', 'a': 'apple'}
>>> d.keys()
dict_keys(['m', 'f', 'a'])
>>> for x in d.keys(): print(x)
m
f
a
>>> |

什么是dict_keys()以及如何在方法中覆盖它(方式__iter__ 被覆盖)?

4

1 回答 1

3

dict_keys()是一个字典视图对象;此类对象是可迭代对象(这意味着您可以使用 为此类对象创建多个独立的迭代器iter())。

您可以从方法中返回您自己的此类对象的实现.keys()。返回的特定类型dict.keys()不可重复使用,您必须从头开始实现自己的类型。

我在以前的答案中介绍了创建自己的答案;有很多方法可以涵盖。

请注意,生成器函数只是一种使用 Python 函数创建迭代器的技术。所有生成器函数在调用时都会产生一个迭代器,但并非所有迭代器都是生成器迭代器。您还可以使用生成器表达式创建迭代器,或者通过包含一个__iter__返回的self__next__方法和一个在每次调用它时生成其中一个项目的方法。

于 2013-08-13T13:11:08.243 回答