gpt4 book ai didi

python - 名称未在具有多个循环的列表理解中定义

转载 作者:太空狗 更新时间:2023-10-29 20:16:42 25 4
gpt4 key购买 nike

我正在尝试解压一个复杂的字典,但我在使用多个循环的列表理解表达式中得到了一个 NameError:

a={
1: [{'n': 1}, {'n': 2}],
2: [{'n': 3}, {'n': 4}],
3: [{'n': 5}],
}
good = [1,2]
print [r['n'] for r in a[g] for g in good]
# NameError: name 'g' is not defined

最佳答案

你的循环顺序搞混了;它们被认为是从左到右嵌套的,因此 for r in a[g]outer 循环并首先执行。交换循环:

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

现在 g 为下一个循环定义,for r in a[g],表达式不再引发异常:

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

关于python - 名称未在具有多个循环的列表理解中定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35479600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com