我有两个清单:
第一个列表包含顶级名称信息;每个项目有多个描述符
第二个列表包含第一个列表中项目的变体;每个项目还有多个描述符
外部(第一个)列表包含三项;name1
、name2
、 和name3
。还有一个source
,但我没有费心在示例中更改它以保持简单。
内部(第二个)列表包含外部列表的名称和来源,然后有自己的名称和来源。
最终结果应该是这样的:
name1 (source1)
===============
* [name1-foo1]: . "description1"
* [name1-foo2]: . "description2"
* [name1-foo3]: . "description3"
subname1 (subsource1)
---------------
* [name1-sub1-bar1]: . "description1"
* [name1-sub1-bar2]: . "description2"
* [name1-sub1-bar3]: . "description3"
subname2 (subsource1)
---------------
* [name1-sub2-bar1]: . "description1"
* [name1-sub2-bar2]: . "description2"
* [name1-sub2-bar3]: . "description3"
...
我的问题是我的外循环查找name和中的更改source作为打印标题并继续打印下一个内容的触发器。但由于内循环仅由更改触发,因此当外循环运行完时,它不会最后一次运行内循环来获取所有子项。
import collections
OuterRecord = collections.namedtuple('OuterRecord',
'name, source, thing, level, description')
InnerRecord = collections.namedtuple('InnerRecord',
'name, source, in_name, in_source, thing, level, description')
o = [
OuterRecord('name1', 'source1', 'name1-foo1', 1, 'description1'),
OuterRecord('name1', 'source1', 'name1-foo2', 5, 'description2'),
OuterRecord('name1', 'source1', 'name1-foo3', 10, 'description3'),
OuterRecord('name2', 'source1', 'name2-foo1', 1, 'description1'),
OuterRecord('name2', 'source1', 'name2-foo2', 5, 'description2'),
OuterRecord('name2', 'source1', 'name2-foo3', 10, 'description3'),
OuterRecord('name3', 'source1', 'name3-foo1', 1, 'description1'),
OuterRecord('name3', 'source1', 'name3-foo2', 5, 'description2')
]
]
因此,一旦一切完成,我可以再次单独运行内部循环,但这闻起来很糟糕。
有没有更好的方法来构建循环,以便这一切一次性发生?
jeck猫
慕标琳琳
相关分类