如何对嵌套字典中列表的第二个元素求和?求实现代码
实现方案
以下几种方法都可以实现你需要的嵌套字典求和需求:
方法1:字典推导式(简洁高效)
这是最推荐的方式,一行代码完成转换:
original_dict = {('201', '1'): {'357': [1, 67500], '360': [1, 40000], '362': [2, 45000], '365': [1, 12500]}, ('301', '2'): {'322': [5, 237500]}, ('301', '1'): {'325': [10, 675000]}} result = {key: sum(item[1] for item in inner_dict.values()) for key, inner_dict in original_dict.items()} print(result)
运行后输出:
{('201', '1'): 165000, ('301', '2'): 237500, ('301', '1'): 675000}
核心逻辑:遍历外层字典的每个键值对,对每个内层字典,提取所有列表的第二个元素并求和,作为结果字典对应键的值。
方法2:普通循环遍历(直观易懂)
如果需要更清晰的步骤展示,用循环逐个处理:
original_dict = {('201', '1'): {'357': [1, 67500], '360': [1, 40000], '362': [2, 45000], '365': [1, 12500]}, ('301', '2'): {'322': [5, 237500]}, ('301', '1'): {'325': [10, 675000]}} result = {} for outer_key, inner_dict in original_dict.items(): total = 0 for lst in inner_dict.values(): total += lst[1] result[outer_key] = total print(result)
方法3:map+sum组合实现
用map函数提取列表的第二个元素,再求和:
original_dict = {('201', '1'): {'357': [1, 67500], '360': [1, 40000], '362': [2, 45000], '365': [1, 12500]}, ('301', '2'): {'322': [5, 237500]}, ('301', '1'): {'325': [10, 675000]}} result = {key: sum(map(lambda x: x[1], inner_dict.values())) for key, inner_dict in original_dict.items()} print(result)
内容的提问来源于stack exchange,提问作者SH Chung
相关产品推荐
相关产品推荐

