对字典中所有列表位置求和

时间:2013-05-25 17:02:32

标签: python list-comprehension

这是我想分享的问题和答案,因为我发现它非常有用。 假设我有一个可以使用不同键访问的字典。在字典的每个位置,我都有一个固定长度的列表:

a={}
a["hello"]=[2,3,4]
a["bye"]=[0,10,100]
a["goodbye"]=[2,5,50]

我有兴趣只使用各自列表的a位来计算1中所有条目的总和。 在这个例子中,我想总结一下:

finalsum=sum([3,10,5]) #-----> 18

2 个答案:

答案 0 :(得分:2)

完全跳过键,因为它们并不重要。

sum(i[1] for i in a.itervalues())

另外作为旁注,在迭代dict时你不需要做a.keys(),你可以说for key in a它会使用键。

您可以使用a.values()获取dict中所有值的列表。据我所知,钥匙是无关紧要的。 a.itervalues()通过迭代而不是构建新列表来工作。通过使用this和生成器表达式作为sum的参数,没有创建无关列表。

答案 1 :(得分:1)

我将list-comprehensions用于我的一行解决方案(此处分为两行):

 elements=[a[pos][1] for pos in a.keys()]  #----> [3,5,10]
 finalsum=sum(elements)

我对这个解决方案很满意:),但是,还有其他任何建议吗?