在分配之前引用的列表理解变量

ust*_*etz 1 python json list-comprehension

我试图基于这个JSON生成一个列表:

city_list = [
    city
    for city in metroextractor_cities['regions'][region]['cities']
    for region in metroextractor_cities['regions']]
Run Code Online (Sandbox Code Playgroud)

Python说变量region在赋值之前被引用:

UnboundLocalError: local variable 'region' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

我真的没看到.我的列表理解有什么问题?

Mar*_*ers 9

你的循环是错误的; 它们应按嵌套顺序列出,从左到右:

city_list = [
    city 
    for region in metroextractor_cities['regions']
    for city in metroextractor_cities['regions'][region]['cities']]
Run Code Online (Sandbox Code Playgroud)

现在region设置在'外部'循环中,以便'内部'循环可以使用它.