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

如何对字典内列表的指定索引元素分别求和?

Python字典子列表指定索引元素求和实现方案

原始数据

a_dictionary = {"dog": [["white", 3, 5], ["black", 6,7], ["Brown", 23,1]],
                "cat": [["gray", 5, 6], ["brown", 4,9]],
                "bird": [["blue", 3,5], ["green", 1,2], ["yellow", 4,9]],
                "mouse": [["gray", 3,4]]
                }

需求说明

对字典中每个键对应的子列表集合,分别计算所有子列表中索引为1的元素和索引为2的元素的总和,最终输出格式如下:

dog [32, 13]
cat [9, 15]
bird [8, 16]
mouse [3,4]

可行实现方案

方法1:基础循环累加

直接遍历字典的键值对,初始化两个求和变量,逐个遍历子列表累加对应索引的值:

for key, values in a_dictionary.items():
    sum_idx1 = 0
    sum_idx2 = 0
    for sub_list in values:
        sum_idx1 += sub_list[1]
        sum_idx2 += sub_list[2]
    print(f"{key} [{sum_idx1}, {sum_idx2}]")

方法2:生成器表达式简化求和

利用Python内置的sum()函数结合生成器表达式,直接提取对应索引元素求和,代码更简洁:

for key, values in a_dictionary.items():
    sum_idx1 = sum(sub[1] for sub in values)
    sum_idx2 = sum(sub[2] for sub in values)
    print(f"{key} [{sum_idx1}, {sum_idx2}]")

方法3:zip+map批量处理

通过zip()将所有子列表的目标索引元素打包成两组,再分别求和,适合对多索引批量处理的场景:

for key, values in a_dictionary.items():
    # 提取每个子列表的索引1、2元素并打包
    idx1_vals, idx2_vals = zip(*(sub[1:] for sub in values))
    print(f"{key} [{sum(idx1_vals)}, {sum(idx2_vals)}]")

关于遍历方式的说明

用range()遍历字典不可行的原因是:range(len(a_dictionary))只能拿到字典元素的位置索引,无法直接关联到对应的键和值;而for key, value in a_dictionary.items()是遍历字典键值对的标准方式,只要对value(即每个键对应的子列表集合)做进一步遍历或提取元素即可完成求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:40:22