Python中如何无循环访问字典内列表首元素并求和?
解决方法:无显式循环求和字典列表的首元素
当然可以!完全不用写显式的for/while循环就能实现这个需求,这里有两种简洁的方式:
方法1:使用map() + sum()
利用map()批量提取每个列表的第一个元素,再用sum()直接完成求和:
my_dict = {'key1': [3, 1], 'key2': [0, 4], 'key3': [57492, 204652], 'key4': [1,3]} total = sum(map(lambda x: x[0], my_dict.values())) print(total) # 输出结果:57496
这里map()会自动遍历字典的所有值(也就是各个列表),通过lambda函数取出每个列表的第一个元素,最后sum()把这些元素一次性加总,全程没有显式的循环语句。
方法2:使用生成器表达式 + sum()
如果你觉得lambda有点啰嗦,也可以用更直观的生成器表达式——它属于隐式循环,同样没有传统的循环代码块:
my_dict = {'key1': [3, 1], 'key2': [0, 4], 'key3': [57492, 204652], 'key4': [1,3]} total = sum(lst[0] for lst in my_dict.values()) print(total) # 输出结果:57496
生成器表达式会逐个取出字典值中的列表,提取首元素后直接交给sum()处理,写法更贴近自然语言,可读性也很强。
两种方法都能高效完成你的需求,选哪种全看个人习惯~
内容的提问来源于stack exchange,提问作者Unic0
相关产品推荐
相关产品推荐

