我有一个词典列表。每个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方式吗?感谢
答案 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])