是否可以将此代码段转换为列表解析?怎么样?

时间:2011-02-08 02:38:49

标签: python list-comprehension

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

2 个答案:

答案 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)会这样做。