以下是具有字典的列表的列表
(Pdb) [group.orgs for group in membership.group_permission_roles]
[[{'moid': '5d2d5ee66972652d30d5e456', 'object_name': None}], [{'moid': '5d3127ec6972652d30d60fdd', 'object_name': None}], [{'moid': '5d2f2e2b6972652d30d606f4', 'object_name': None}]]
我们如何获取列表中每个“ moid”的值。
当我尝试如下迭代时,值将被覆盖
(Pdb) [org.moid for org in group.orgs for group in membership.group_permission_roles ]
['5d2f2e2b6972652d30d606f4', '5d2f2e2b6972652d30d606f4', '5d2f2e2b6972652d30d606f4']
答案 0 :(得分:0)
第二段代码仅适用于您,因为您先前已经在第一段代码中定义了group
(并且正在使用Python 2,列表理解变量会泄漏到周围的范围内)。 group
根本不是来自当前迭代,而是始终指原始列表理解的最终迭代。
嵌套列表理解是“向后的”,因为它们遵循与标准嵌套for循环相同的结构。在您的情况下,循环看起来像这样:
for group in membership.group_permission_roles:
for org in group.orgs:
... org.moid ...
因此嵌套列表的理解应为:
[org.moid for group in membership.group_permission_roles for org in group.orgs]