Glom:如何包括特定于字段的默认值

胸腺

如何在glom的输出中包含特定字段的默认值

例如,我可以这样包含“常量”:

from glom import Spec, Literal
extract = Spec({'A': 'a', 'B': Literal(42)}).glom
assert extract({'a': 'life'}) == {'A': 'life', 'B': 42}

但是,仅当输入中没有“ B”时,我如何指定“ B”应指向42?走出困境,我可以这样做:

from glom import Spec
extract = lambda d: dict(Spec({'A': 'a'}).glom(d), B=d.get('B', 42))
assert extract({'a': 'life'}) == {'A': 'life', 'B': 42}
assert extract({'a': 'life', 'B': 'is short'}) == {'A': 'life', 'B': 'is short'}

当然,有更复杂的方法可以做到这一点。

胸腺

(我想我会得到荣耀的((因为不早知道这一点而感到羞耻)。)

答案是:其中参数一起使用glom.Coalescedefault

上面我的lambda使用代码的等效形式:

from glom import Spec, Coalesce
extract = Spec({'A': 'a', 'B': Coalesce('B', default=42)}).glom  # the solution
assert extract({'a': 'life'}) == {'A': 'life', 'B': 42}
assert extract({'a': 'life', 'B': 'is short'}) == {'A': 'life', 'B': 'is short'}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章