You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用glom将字典中不同格式的uptime值统一转为字符串

解决方案

你需要对Coalesce返回的结果追加类型判断和转换逻辑:当拿到的是字典类型时,将键值对按顺序拼接为目标字符串,字符串类型则直接返回。

完整可运行代码

from glom import glom, Coalesce, Iter, Merge, T, If

spec = (
    T.items(),
    Iter(
        {
            "uptime": Coalesce(T[1]["uptime"], T[1]["kernel_uptime"]) 
            >> If(
                pred=lambda x: isinstance(x, dict),
                then=lambda d: ", ".join(f"{v} {k}" for k, v in d.items()),
                default=T
            )
        },
    ),
    Merge(),
)

# 测试IOS输入
show_version_ios_parsed = {
    "version": {
        "uptime": "7 weeks, 6 days, 3 hours, 37 minutes",
    }
}
print(glom(show_version_ios_parsed, spec)) 
# 输出:{'uptime': '7 weeks, 6 days, 3 hours, 37 minutes'}

# 测试NXOS输入
show_version_nxos_parsed = {
    "platform": {
        "kernel_uptime": {"days": 102, "hours": 1, "minutes": 2, "seconds": 13},
    }
}
print(glom(show_version_nxos_parsed, spec))
# 输出:{'uptime': '102 days, 1 hours, 2 minutes, 13 seconds'}

逻辑说明

  • 用>>操作符将Coalesce的输出传递给后续的If判断节点
  • If节点首先判断输入值是否为字典类型:
    • 是字典则遍历所有键值对,按值 键的格式拼接,用逗号分隔
    • 不是字典(即IOS场景的字符串)则直接返回原值

内容的提问来源于stack exchange,提问作者Dmitry Teslya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:06:05