Python 列出多个级别和相关级别

Python 列出多个级别和相关级别,python,list-comprehension,Python,List Comprehension,我想做一个列表,用多个字母表示理解。 更困难的是,这两个级别之间存在依赖关系。 较高的,app.containers是一个容器列表,它包含一些内容,也可编辑 最后,这个字典应该包含一些指向整个应用程序内容的指针,可以通过它的名称访问,前缀是它的一个容器 prefixed_names = {".".join(container.name, content.name): content for content in container.contents

我想做一个列表,用多个字母表示理解。 更困难的是,这两个级别之间存在依赖关系。 较高的,
app.containers
是一个容器列表,它包含一些
内容
,也可编辑

最后,这个字典应该包含一些指向整个应用程序内容的指针,可以通过它的名称访问,前缀是它的一个容器

prefixed_names = {".".join(container.name, content.name): content
                  for content in container.contents
                  for container in app.containers}

Python抛出了一个
NameError
,说明未定义
容器。

列表理解是为
循环编写嵌套
的一种方便方法。
表达式的第一个
是最外面的
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
在表达中

... for content in container.contents for container in app ....
您有一个内部变量
容器
,它将替换外部变量
容器
。看看是否

... for content in container.contents for c in app ....

有帮助。在这里,即使是我也无法确定您希望在
join
语句中引用哪个
容器。。。的确,它工作得很好。对不起。我本可以阅读这个问题的手册。:)谢谢大家!@carrieje你也可以接受这个答案,这样对其他人有利:-)我正要这么做。我会在应用程序允许我做时立即做^^^您应该更改两个
for
循环的位置以解决问题。第一个是外环。