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

Python如何按image_name分组统计duration总和输出指定格式

按镜像名累加时长的实现方案

你需要对top_duration列表按image_name字段分组,累加同组的duration值,最终输出{总时长, 镜像名}格式的结果,以下是两种可直接运行的实现方式:

方案1:纯原生Python实现(无任何依赖)

不需要引入额外库,通过字典维护分组累加值即可,兼容性最好。

# 原始输入数据
top_duration = [
    {"duration": 3752, "image_name": "ohcm-designer-orchestration-service"},
    {"duration": 3471, "image_name": "ohcm-designer-orchestration-service"},
    {"duration": 3452, "image_name": "metadata-validations-service"},
    {"duration": 120, "image_name": "metadata-validations-service"},
    {"duration": 114, "image_name": "metadata-validations-service"},
    {"duration": 111, "image_name": "ohcm-metadata-dna-service"},
    {"duration": 102, "image_name": "metadata-validations-service"},
    {"duration": 100, "image_name": "metadata-runtime-proxy-service"},
]

# 遍历列表完成分组累加
sum_map = {}
for item in top_duration:
    img_name = item["image_name"]
    dur = item["duration"]
    if img_name not in sum_map:
        sum_map[img_name] = 0
    sum_map[img_name] += dur

# 转换为要求的格式输出
result = [{total_dur, img_name} for img_name, total_dur in sum_map.items()]

运行后计算结果完全匹配需求:

  • metadata-validations-service对应结果为{3788, 'metadata-validations-service'}
  • ohcm-designer-orchestration-service对应结果为{7223, 'ohcm-designer-orchestration-service'}
  • ohcm-metadata-dna-service对应结果为{111, 'ohcm-metadata-dna-service'}
  • metadata-runtime-proxy-service对应结果为{100, 'metadata-runtime-proxy-service'}

方案2:用标准库defaultdict简化逻辑

可以引入Python标准库collections中的defaultdict,省去手动判断键是否存在的步骤,代码更简洁:

from collections import defaultdict

# 原始top_duration数据
top_duration = [
    {"duration": 3752, "image_name": "ohcm-designer-orchestration-service"},
    {"duration": 3471, "image_name": "ohcm-designer-orchestration-service"},
    {"duration": 3452, "image_name": "metadata-validations-service"},
    {"duration": 120, "image_name": "metadata-validations-service"},
    {"duration": 114, "image_name": "metadata-validations-service"},
    {"duration": 111, "image_name": "ohcm-metadata-dna-service"},
    {"duration": 102, "image_name": "metadata-validations-service"},
    {"duration": 100, "image_name": "metadata-runtime-proxy-service"},
]

sum_map = defaultdict(int)
for item in top_duration:
    sum_map[item["image_name"]] += item["duration"]

result = [{total_dur, img_name} for img_name, total_dur in sum_map.items()]

注意:Python中{v1, v2}是无序集合结构,如果后续需要按固定位置取值(比如固定第一个元素是总时长、第二个是镜像名),建议将集合替换为元组(total_dur, img_name),避免集合无序导致的取值错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:03:28