我想用多个for列表理解。
为了使它更难,我有两个级别之间的依赖关系。
较高的app.containers
是容器列表,它包含一些contents
,也是可迭代的。
这个字典最后应该包含一些指向整个应用程序内容的指针,可以通过其名称访问,前缀为其中一个容器。
prefixed_names = {".".join(container.name, content.name): content
for content in container.contents
for container in app.containers}
Python抛出NameError
,认为container
未定义。
答案 0 :(得分:3)
列表推导是编写嵌套for
循环的便捷方式。第一个for
表达式是最外面的for
,因此您需要交换编写for
表达式的顺序。举个例子:
>>> [ a+b for a in 'san' for b in '123' ]
['s1', 's2', 's3', 'a1', 'a2', 'a3', 'n1', 'n2', 'n3']
>>> for a in 'san':
... for b in '123':
... print a+b,
...
s1 s2 s3 a1 a2 a3 n1 n2 n3
答案 1 :(得分:0)
在表达中
... for content in container.contents for container in app ....
您有一个内部变量container
,它将替换外部变量container
。看看
... for content in container.contents for c in app ....
帮助。在这里,即使我无法在container
语句中找出您想要引用的join
。