绝地无双
如果要使用特殊规则制作一个 dict 来处理实际上未存储在 dict 哈希表中的键,则需要创建dict该 implementations的子类__missing__:通过调用dict.__getitem__()来实现self[key]的dict子类时,关键是不是在字典。像这样:class SpecialDict(dict): def __missing__(self, key): if isinstance(key, tuple) and len(key) == 2 and key[1] == 0: return [0, key] raise KeyError(key)我不太明白你的例子应该如何工作,所以这里有一个不同的例子来证明它:>>> d = SpecialDict({(1, 1): [2, 3], (1, 2): [5, 4]})>>> d[1, 1][2, 3]>>> d[2, 2]KeyError: (2, 2)>>> d[20, 0][0, 20]如果您为一个(n, 0)键存储一个值,它不会调用__missing__该键,允许您覆盖单个键,(n, 0)同时保留其余键的特殊规则:>>> d[42, 0] = [23, 23]>>> d[42, 0][23, 23]>>> d[23, 0][0, 23]