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

如何合并Python中仅字典键不同的两个列表推导式?

解决方法

你可以通过在列表推导式中新增一层循环,遍历['stopped', 'warning']这两个键,就能一次性把两种来源的日志合并生成,不用写两个重复的推导式:

logs_combined = [
    DDLog(self.HOST, "dms", log["name"], log["StopReason"], f"env:{env}").to_log()
    for env in self.envs
    for key in ['stopped', 'warning']
    for log in tasks[env][key]["tasks"]
]

如果担心部分环境下不存在其中某个键(比如有的env只有"stopped"没有"warning"),可以用get方法避免KeyError,确保代码鲁棒性:

logs_combined = [
    DDLog(self.HOST, "dms", log["name"], log["StopReason"], f"env:{env}").to_log()
    for env in self.envs
    for key in ['stopped', 'warning']
    for log in tasks[env].get(key, {}).get("tasks", [])
]

这个写法的逻辑是:先遍历所有环境,再遍历两个目标键,最后遍历对应键下的tasks列表,把所有符合条件的日志都生成出来,完全等价于你原来两个推导式的结果合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:35:30