擅长:python、mysql、java
<p>您可以做的事情是创建一个自定义类作为字典的包装器。无论何时调用<code>obj[key] = val</code>,都是隐式调用该对象的<code>__setitem__(self, key, val)</code>方法。创建自定义类时,可以覆盖此方法以执行您喜欢的操作(即,更新关联列表)。你知道吗</p>
<p>下面是一个示例类包装器:</p>
<pre><code>class EnhancedDict(object):
def __init__(self): # The constructor
self.dictVar = {} # Your dictionary
self.listVar = [] # Your list
def __getitem__(self, key): # Equivalent to obj[key]
return self.dictVar[key]
def __setitem__(self, key, val) # Equivalent to obj[key] = val
self.dictVar[key] = val
self.listvar.append(val)
</code></pre>
<p>然后,每当您向词典中添加新项时,列表将自动更新,您可以轻松地执行以下操作:</p>
<pre><code>>>> dict_obj = EnhancedDict()
>>> dict_obj["foo"] = "bar" # Automatically updates both the list and the dict
>>> dict_obj["foo"]
'bar'
>>> dict_obj.dictVar
{'foo': 'bar'}
>>> dict_obj.listVar
['bar']
</code></pre>
<p>还有一个<code>__delitem__</code>函数可以重写以完成类的功能。更多信息可在文档中找到:</p>
<p><a href="https://docs.python.org/2/reference/datamodel.html" rel="nofollow">https://docs.python.org/2/reference/datamodel.html</a></p>