Name is not defined in a list comprehension with multiple loops

前端 未结 1 1534
陌清茗
陌清茗 2020-11-30 14:19

I\'m trying to unpack a complex dictionary and I\'m getting a NameError in a list comprehension expression using multiple loops:

a={
  1: [{\'n\         


        
相关标签:
1条回答
  • 2020-11-30 14:23

    You have the order of your loops mixed up; they are considered nested from left to right, so for r in a[g] is the outer loop and executed first. Swap out the loops:

    print [r['n'] for g in good for r in a[g]]
    

    Now g is defined for the next loop, for r in a[g], and the expression no longer raises an exception:

    >>> a={
    ...   1: [{'n': 1}, {'n': 2}],
    ...   2: [{'n': 3}, {'n': 4}],
    ...   3: [{'n': 5}],
    ... }
    >>> good = [1,2]
    >>> [r['n'] for g in good for r in a[g]]
    [1, 2, 3, 4]
    
    0 讨论(0)
提交回复
热议问题