这是我想分享的一个问题和答案,因为我发现它非常有用。假设我有一本可以使用不同键访问的字典。在字典的每个位置,我都有一个固定长度的列表:
a={}
a["hello"]=[2,3,4]
a["bye"]=[0,10,100]
a["goodbye"]=[2,5,50]
我有兴趣仅使用它们各自列表的a
位置来计算所有条目的总和。1
在示例中,我想总结一下:
finalsum=sum([3,10,5]) #-----> 18
这是我想分享的一个问题和答案,因为我发现它非常有用。假设我有一本可以使用不同键访问的字典。在字典的每个位置,我都有一个固定长度的列表:
a={}
a["hello"]=[2,3,4]
a["bye"]=[0,10,100]
a["goodbye"]=[2,5,50]
我有兴趣仅使用它们各自列表的a
位置来计算所有条目的总和。1
在示例中,我想总结一下:
finalsum=sum([3,10,5]) #-----> 18
完全跳过键,因为它们并不重要。
sum(i[1] for i in a.itervalues())
另外作为旁注,您不需要在迭代字典时执行 a.keys() ,您只需说它for key in a
会使用键。
您可以使用a.values()
来获取 a 中所有值的列表dict
。据我所知,钥匙是无关紧要的。 a.itervalues()
通过迭代而不是构建新列表来工作。通过使用它和生成器表达式作为 sum 的参数,不会创建无关的列表。
我将列表理解用于我的单行解决方案(这里分为两行):
elements=[a[pos][1] for pos in a.keys()] #----> [3,5,10]
finalsum=sum(elements)
我对这个解决方案很满意:),但是,还有其他建议吗?