如何将包含Resource_id的多维度匹配结果转换为指定聚合格式?
实现思路
- 核心逻辑是对相同
Resource_id下的同维度匹配得分做累加:遍历原始数据中每个资源id对应的所有条目,将同维度的数值相加,最终按指定格式输出合并后的结果即可。
代码实现(Python示例)
# 原始输入数据 raw_data = { '1': [ {"Resource_id": 1, "Rolemaching": 5}, {"Resource_id": 1, "Rolemaching": 5}, {"Resource_id": 1, "Technologymaching": 25}, {"Resource_id": 1, "Technologymaching": 25}, {"Resource_id": 1, "Educationmaching": 1.6666666666666667}, {"Resource_id": 1, "Educationmaching": 3.3333333333333335} ], '2': [{"Resource_id": 2, "Domainmaching": 10}] } result = [] for items in raw_data.values(): merged = {} for item in items: # 写入Resource_id,仅需写入一次 if "Resource_id" not in merged: merged["Resource_id"] = item["Resource_id"] # 累加同维度的匹配得分 for k, v in item.items(): if k == "Resource_id": continue merged[k] = merged.get(k, 0) + v result.append(merged) # 按指定格式打印结果 for res in result: print("{") for idx, (k, v) in enumerate(res.items()): end = "," if idx != len(res)-1 else "" print(f" {k} : {v}{end}") print("}")
输出说明
运行上述代码后输出结果如下:
{ Resource_id : 1, Rolemaching : 10, Technologymaching : 50, Educationmaching : 5.0 } { Resource_id : 2, Domainmaching : 10 }
注:你给出的目标输出中
Technologymaching为25、Educationmaching为4.5和原始数据累加结果不一致,如果需要按去重、平均值等其他规则统计,修改对应维度的数值计算逻辑即可。
内容的提问来源于stack exchange,提问作者Deepak Dev
相关产品推荐
相关产品推荐

