[英]What happens when I loop a dict in python
我知道当我把一个dict
放入for...in...
语法时, Python
会简单地返回键列表。
但是dict会发生什么?
当我们使用help(dict)
,我们在方法列表中看不到__next()__
方法。 所以如果我想根据dict
创建一个派生类:
class MyDict(dict)
def __init__(self, *args, **kwargs):
super(MyDict, self).__init__(*args, **kwargs)
并返回值列表中的for...in...
d = Mydict({'a': 1, 'b': 2})
for value in d:
我该怎么办?
天真地,如果你想要的只是迭代MyClass
一个实例来产生值而不是键,那么在MyClass
定义:
def __iter__(self):
return self.itervalues()
在Python 3中:
def __iter__(self):
return iter(self.values())
但要小心! 通过这样做,您的类不再实现collections.MutableMapping
的契约,即使issubclass(MyClass, collections.MutableMapping)
为True。 你可能最好不要继承dict
,如果这是你想要的行为,而是有一个dict
类型的属性来保存数据,并只实现你需要的函数和运算符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.