【发布时间】:2020-06-18 14:57:41
【问题描述】:
我有一个带有一些默认值的namedtuple,我想将它与相同namedtuple 的另一个实例合并(或按字段合并)
T = collections.namedtuple("T", ("a", "b"))
x = T(1, None)
y = T(None, 1)
z = coalesce(x, y) # same as z = T(1, 1)
有没有一种干净的方法可以做到这一点?我真正想做的是一个类型安全的_replace() 调用,但这不可能存在,所以合并似乎是下一个最佳解决方案。
【问题讨论】:
-
我不明白你的第二个例子。
-
我要说覆盖以前的值,但它只会返回第二个参数。我将删除第二个示例。
-
“类型安全的
_replace调用”是什么意思? -
@juanpa.arrivillaga
_replace()被类型注释为采用Mapping[str, Any]之类的内容,因此 mypy 无法验证 kwarg 是否是namedtuple中的字段。
标签: python namedtuple null-coalescing-operator