2011-01-09 99 views
1

有人可以解釋如何做嵌套的詞典理解?Python嵌套的詞典理解集

>> 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} 

我只是問了一個關於previous question一個簡單的字典理解其中的發電機功能括號減少。最左邊理解中的s怎麼不被識別?

回答

5

就扭轉兩個循環的順序:

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

這工作。不過,我在手冊(http://docs.python.org/tutorial/datastructures.html)中看到,「嵌套列表理解必須特別小心:爲了避免在嵌套列表解析時產生理解,請閱讀從右到左「。爲什麼不適用? – ash 2011-01-09 11:50:12