Python вложенный dict для понимания с множествами - PullRequest
1 голос
/ 09 января 2011

Может ли кто-нибудь объяснить, как выполнять вложенные вложения в слова?

>> l = [set([1, 2, 3]), set([4, 5, 6])]
>> j = dict((a, i) for a in s for i, s in enumerate(l))
>> NameError: name 's' is not defined

Мне бы хотелось:

>> j
>> {1:0, 2:0, 3:0, 4: 1, 5: 1, 6: 1}

Я только что задал предыдущий вопрос оболее простое понимание, где скобки в функции генератора были уменьшены.Почему s в самом левом понимании не распознается?

1 Ответ

5 голосов
/ 09 января 2011

Просто измените порядок двух циклов:

j = dict((a, i) for i, s in enumerate(l) for a in s)
...