这是我想分享的问题和答案,因为我发现它非常有用。 假设我有一个可以用不同的键访问的字典。而在字典中的每个位置我有一个固定长度的列表:总结在字典中的所有列表位置
a={}
a["hello"]=[2,3,4]
a["bye"]=[0,10,100]
a["goodbye"]=[2,5,50]
我很感兴趣,只使用其各自的列表的位置1
来计算a
所有条目的总和。 在这个例子中,我想总结:
finalsum=sum([3,10,5]) #-----> 18
这是我想分享的问题和答案,因为我发现它非常有用。 假设我有一个可以用不同的键访问的字典。而在字典中的每个位置我有一个固定长度的列表:总结在字典中的所有列表位置
a={}
a["hello"]=[2,3,4]
a["bye"]=[0,10,100]
a["goodbye"]=[2,5,50]
我很感兴趣,只使用其各自的列表的位置1
来计算a
所有条目的总和。 在这个例子中,我想总结:
finalsum=sum([3,10,5]) #-----> 18
只需完全跳过这些键,因为它们并不重要。
sum(i[1] for i in a.itervalues())
另外,作为一个侧面说明,你不遍历一个字典时需要做a.keys(),你就可以说for key in a
,它会使用键。
您可以使用a.values()
获取dict
中所有值的列表。据我所知,钥匙是无关紧要的。 a.itervalues()
通过迭代而不是构建新列表来工作。通过使用它和一个生成器表达式作为求和的参数,不会创建无关的列表。
我用列表内涵为我的一个在线解决方案(在两行分开这里):
elements=[a[pos][1] for pos in a.keys()] #----> [3,5,10]
finalsum=sum(elements)
我很高兴与此解决方案: ),但是,还有其他建议吗?
+1,通过按键循环在这里没有意义。 –
@瑞宁海宁:这个版本比我的更小巧,更酷。谢谢! – lllllll