Python如何按字典gender字段分组统计对应cost的总和
错误原因
你现有代码无论匹配到哪个性别,都是直接对完整的cost列表求和,没有筛选对应性别的关联cost值,所以所有分组结果都是总花费。
修复方案
方案1:修改你原有的循环逻辑(符合你猜测的调整求和逻辑的思路)
在求和时增加对应性别的过滤条件即可:
for g in set(bbb_dct["gender"]): # 仅对和当前性别同位置的cost做累加 x = sum(cost for gender, cost in zip(bbb_dct["gender"], bbb_dct["cost"]) if gender == g) print({g: x})
方案2:遍历配对值累加(性能更优,仅需一次遍历)
提前初始化结果字典,把gender和cost按位置配对后遍历累加:
# 初始化各性别初始累计值为0 result = {"F": 0, "M": 0, "O": 0} # 按位置配对两个列表的元素 for gender, cost in zip(bbb_dct["gender"], bbb_dct["cost"]): result[gender] += cost # 按要求格式输出 for k, v in result.items(): print({k: v})
两种方案运行后都会输出你需要的结果:
{'O': 4} {'F': 479} {'M': 2932}
内容的提问来源于stack exchange,提问作者gardencode
相关产品推荐
相关产品推荐

