簡體   English   中英

當我在python中循環一個dict時會發生什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM