[New-bugs-announce] [issue31126] dict comprehension shouldn't raise UnboundLocalError

ksqsf report at bugs.python.org
Sun Aug 6 09:17:16 EDT 2017

New submission from ksqsf:

The code
    key = ["a", "b"]
    val = [1, 2]
    dic = {key:val for key in key for val in val}
will raise UnboundLocalError in Python 3.6.2 and 2.7.13.

Intuitively, the element 'key' and the list 'key' are not the same, so generally the expected result is {"a": 1, "b": 2}.

There are similar cases for listcomps, setcomps and genexprs:
    l = [1, 2, 3]
    {l for l in l}   # => {1, 2, 3}
    [l for l in l]   # => [1, 2, 3]
    for l in (l for l in l):
        print(l, end=' ')
                     # => 1 2 3 
All of them do as what is expected. 

For consistency and intuitiveness, the behavior of distcomps should be modified so that no UnboundLocalError is raised.

components: Interpreter Core
messages: 299799
nosy: ksqsf
priority: normal
severity: normal
status: open
title: dict comprehension shouldn't raise UnboundLocalError
type: behavior
versions: Python 3.6

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list