我想要一个实现intersection_update
方法的字典类,在精神上类似于dict.update
但将更新仅限于调用实例中已经存在的那些键(参见下面的一些示例实现)。
但是,本着 Wheel Reinvention Avoidance 的精神,在我开始实施(并编写测试等)具有此附加功能的映射类之前,类似的东西是否已经存在于或多或少的标准模块中?
要清楚,intersection_update
我想到的方法会做这样的事情:
def intersection_update(self, other):
for k in self.viewkeys() & other.viewkeys():
self[k] = other[k]
...虽然实际的实现可能会尝试一些可能的优化,例如:
def intersection_update(self, other):
x, y = (self, other) if len(self) < len(other) else (other, self)
for k in x.iterkeys():
if k in y:
self[k] = other[k]
编辑:在这篇文章的原始版本中,我写过“或者,是否有一个标准的 Python 习语可以避免实现 [class with a intersection_update
] 方法的需要?”,但我几乎立即删除了它,因为经过进一步思考,我意识到这是对弱答案的邀请,因为我对 Python 语言的“核心”有足够的了解,可以非常确定不存在这样的习语,至少不存在与优势相匹配的习语(通用性、易读性、易于打字)的专用方法。