我想创建一个数据结构, 它像字典一样, 具有一个附加功能, 以记录哪些密钥已被“ 消耗 ” 。 请注意, 我无法在重新使用时弹出这些值 。
该结构应支持这三种情况,即当进入时将键的用量标为:
if key in d:
...
d[key]
d.get(key)
这是我所写的:
class DictWithMemory(dict):
def __init__(self, *args, **kwargs):
self.memory = set()
return super(DictWithMemory, self).__init__(*args, **kwargs)
def __getitem__(self, key):
self.memory.add(key)
return super(DictWithMemory, self).__getitem__(key)
def __contains__(self, key):
self.memory.add(key)
return super(DictWithMemory, self).__contains__(key)
def get(self, key, d=None):
self.memory.add(key)
return super(DictWithMemory, self).get(key, d)
def unused_keys(self):
"""
Returns the list of unused keys.
"""
return set(self.keys()).difference(self.memory)
由于我不太熟悉法令的内涵,是否有更好的办法取得这一结果?