我声明了两个变量。首先是一本字典。第二个是列表(它是dictionary的'.values()'方法的输出)。你知道吗
dictVar={'one':1,'two':2,'three':3}
listVar=dictVar.values()
此时,listVar
的内容准确地表示字典dictVar
中存储的每个值
稍后,在代码的某个地方,字典将更新为一个新值:
dictVar['four']=4
现在listVar
的内容是“过时的”。它并不代表字典中存储的所有值。
为了保持列表更新,我必须手动附加一个新值,例如:
dictVar['four']=4
listVar.append(4)
我想知道是否有办法在list变量和dictionary之间建立一个“实时”更新。所以每次字典被修改时,列表也会被更新。你知道吗
您可以做的事情是创建一个自定义类作为字典的包装器。无论何时调用
obj[key] = val
,都是隐式调用该对象的__setitem__(self, key, val)
方法。创建自定义类时,可以覆盖此方法以执行您喜欢的操作(即,更新关联列表)。你知道吗下面是一个示例类包装器:
然后,每当您向词典中添加新项时,列表将自动更新,您可以轻松地执行以下操作:
还有一个
__delitem__
函数可以重写以完成类的功能。更多信息可在文档中找到:https://docs.python.org/2/reference/datamodel.html
使用dictionary view object:
相关问题 更多 >
编程相关推荐