a = 0 b = {'a': [(1, 'a'), (2, 'b'), (3, 'c')], 'b': [(4, 'd'), (5, 'e')]} for c, d in b.iteritems(): for e, f in d: a += e // now a = 15
尝试了几种方法。我想知道一种方法(如果可能的话)用列表理解来简化这个总和:
a = sum(...)
提前谢谢你, pf.me
答案 0 :(得分:6)
a = sum(e for d in b.itervalues() for e, _ in d)
适用于Python 2.7。
a = sum([e for d in b.itervalues() for e, _ in d])
适用于Python 2.3。
我没有尝试过,但a = sum(e for d in b.values() for e, _ in d)
应该是Python 3.0的等价物。
答案 1 :(得分:1)
sum(j for _,i in b.iteritems() for j,_ in i)
会这样做。