为什么字典需要那些'iter'方法?

Lai*_*uan 3 python iterator

假设mydict是一个Python字典.

mydict = {'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)

我可以items用来迭代它的元素:

for k,v in mydict.items():
    print k,v
Run Code Online (Sandbox Code Playgroud)

或使用iteritems:

for k,v in mydict.iteritems():
    print k,v
Run Code Online (Sandbox Code Playgroud)

有什么不同?我认为python的哲学是"只有一种方法"吗?

Gar*_*tty 6

在Python 3中,dict.iter...()方法已被删除并替换正常方法.

它们存在,因为迭代器在字典后被添加到语言中,因此dict.items()返回一个列表.dict.iter...()添加这些方法是为了让人们可以制作更高效的程序(因为迭代器是懒惰的),但也不会破坏与期望列表的旧程序的兼容性.

由于Python 3破坏了兼容性,这是固定的.(dict.iter()可以生成旧的用法list(dict.iter()).注意,在Python 3中dict.items()实际上返回一个字典视图 - 可以迭代,但也提供其他功能.