7

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

例子:

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

有没有更蟒蛇的方式来做到这一点?谢谢

4

3 回答 3

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
于 2013-07-25T15:09:38.383 回答
0

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

print sum([i[i.keys()[0]][1] for i in myList])
于 2013-07-25T15:20:50.523 回答
0
import itertools
sum((v[1][1] for v in itertools.chain(*[d.items() for d in myList])))

itertools 可以将多个列表“链接”在一起,以便在逻辑上存在一个。

于 2013-07-25T15:14:34.870 回答