如何在Python中按列表索引规则计算各步骤对应的平均时长
实现思路
- 先将原列表按每2个元素为一组拆分,每组第一个为id+步骤号字符串,第二个为对应时长
- 提取每组字符串的最后1位作为步骤号,统计每个步骤号的总时长和出现次数
- 最后用每个步骤号的总时长除以出现次数,得到对应平均时长
实现代码
a = ['1111', 1, '1112', 15, '1113', 21, '2221', 1, '2222', 34, '3331', 1, '3332', 54, '3333', 65] # 存储每个步骤的统计数据:key为步骤号,value为[总时长, 出现次数] step_stats = {} # 按步长2遍历列表,i为步骤字符串的索引 for i in range(0, len(a), 2): step_str = a[i] duration = a[i+1] # 提取字符串最后1位作为步骤号 step_num = int(step_str[-1]) # 更新统计数据 if step_num not in step_stats: step_stats[step_num] = [0, 0] step_stats[step_num][0] += duration step_stats[step_num][1] += 1 # 计算各步骤平均时长 step_avg = {} for step, (total, count) in step_stats.items(): step_avg[step] = total / count # 输出结果 for step in sorted(step_avg.keys()): print(f"步骤{step}平均时长:{step_avg[step]}")
运行结果
步骤1平均时长:1.0 步骤2平均时长:34.333333333333336 步骤3平均时长:43.0
如果需要调整结果的小数精度,可在计算平均时使用round(total/count, 保留位数)处理即可。
内容的提问来源于stack exchange,提问作者Vishal A.
相关产品推荐
相关产品推荐

