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

Python中基于字典生成动态列算法得分对比表的实现问题

问题原因排查

你原有代码报错的核心原因是:[key] + (value) 操作中,value 是浮点型数值,不属于可迭代对象,无法直接和列表做拼接操作,同时原有逻辑仅支持单算法数据处理,未适配多算法对比的场景。

可行解决方案

以下代码可实现4个算法得分的对比表格生成,自动适配评估点数量,直接输出标准Markdown格式的表格,可直接复制使用:

# 1. 整理算法数据:可自行修改算法名称和对应得分字典
algorithms = [
    ("算法1", {1: 1.0, 2: 0.5, 3: 0.25, 4: 0.5, 5: 0.25}),
    ("算法2", {1: 0.0, 2: 0.25, 3: 0.25, 4: 0.5, 5: 0.25}),
    ("算法3", {1: 0.8333333333333333, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0}),
    ("算法4", {1: 0.1453355124360636, 2: 0.17621944768308642, 3: 0.17621944768308642, 4: 0.3260061445146773, 5: 0.17621944768308642})
]

# 2. 自动获取所有排序后的评估点(动态适配数量)
eval_points = sorted(set().union(*[alg[1].keys() for alg in algorithms]))

# 3. 生成Markdown格式表格
# 生成表头
header = ["算法名称"] + [f"评估点{p}" for p in eval_points]
print("| " + " | ".join(header) + " |")
# 生成分隔行
print("| " + " | ".join(["---"] * len(header)) + " |")
# 生成每行算法数据,得分默认保留4位小数,可自行修改精度
for alg_name, score_dict in algorithms:
    row = [alg_name] + [f"{score_dict.get(p, 0):.4f}" for p in eval_points]
    print("| " + " | ".join(row) + " |")
输出效果示例

运行上述代码会生成如下格式的表格:

算法名称评估点1评估点2评估点3评估点4评估点5
算法11.00000.50000.25000.50000.2500
算法20.00000.25000.25000.50000.2500
算法30.83330.00000.00000.00000.0000
算法40.14530.17620.17620.32600.1762
自定义调整说明
  • 修改得分保留的小数位数:调整代码中:.4f的数字即可,比如保留2位小数改为:.2f
  • 修改缺省得分:如果某个算法缺少对应评估点的得分,默认会填0,可修改score_dict.get(p, 0)的第二个参数自定义缺省值
  • 修改算法名称:直接调整algorithms列表中每个元组的第一个元素即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 16:24:00