要創建一個完美的dict 子類,必須考慮關鍵細微差別、pickling 效果和高效的方法重寫。本文提供了實現此目標的綜合方法。
而不是直接子類化 dict,請考慮使用 collections.abc 模組中的 MutableMapping 抽象基底類別 (ABC)。它提供了一個包含所需方法的模板,並有助於防止遺失實作。
from collections.abc import MutableMapping class TransformedDict(MutableMapping): def __init__(self, *args, **kwargs): self.store = dict() self.update(dict(*args, **kwargs)) # use the free update to set keys def __getitem__(self, key): return self.store[self._keytransform(key)] def __setitem__(self, key, value): self.store[self._keytransform(key)] = value def __delitem__(self, key): del self.store[self._keytransform(key)] def __iter__(self): return iter(self.store) def __len__(self): return len(self.store) def _keytransform(self, key): return key class lcdict(TransformedDict): def _keytransform(self, key): return key.lower()
TransformedDict 的這個子類別實現了所需的小寫鍵功能:
s = lcdict([('Test', 'test')]) assert s.get('TEST') is s['test'] assert 'TeSt' in s
以上是如何完善我的'dict”子類別以實現高效的密鑰處理和酸洗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!