Можно ли превратить этот фрагмент кода в понимание списка?Как? - PullRequest
0 голосов
/ 08 февраля 2011
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 ]

6 голосов
/ 08 февраля 2011

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 голос
/ 08 февраля 2011

sum(j for _,i in b.iteritems() for j,_ in i) сделает это.

...