Python字典列表[int:tuple]总和

时间:2013-07-25 15:07:58

标签: python

我有一个词典列表。每个Dictionary都有一个整数键和元组值。我想总结位于元组某个位置的所有元素。

示例:

myList = [{1000:("a",10)},{1001:("b",20)},{1003:("c",30)},{1000:("d",40)}]

我知道我可以这样做:

sum = 0
for i in myList:
    for i in myList:
        temp = i.keys()
        sum += i[temp[0]][1]
print sum

有更多的pythonic方式吗?感谢

3 个答案:

答案 0 :(得分:7)

使用生成器表达式,循环遍历所有词典,然后循环其值:

sum(v[1] for d in myList for v in d.itervalues())

对于Python 3,将d.itervalues()替换为d.values()

演示:

>>> sum(v[1] for d in myList for v in d.itervalues())
100

答案 1 :(得分:0)

import itertools
sum((v[1][1] for v in itertools.chain(*[d.items() for d in myList])))

itertools可以将几个列表“链接”在一起,逻辑上就是一个。

答案 2 :(得分:0)

我不知道这是否是一种更加pythonic的方式:

print sum([i[i.keys()[0]][1] for i in myList])