【发布时间】:2013-01-07 02:34:42
【问题描述】:
我的 python 程序返回一个包含子列表数据的列表。每个子列表都包含一篇文章的唯一 ID 和该文章的父 ID,即
pages_id_list ={ {22, 4},{45,1},{1,1}, {4,4},{566,45},{7,7},{783,566}, {66,1},{300,8},{8,4},{101,7},{80,22}, {17,17},{911,66} }
在每个 sub-list 中,数据的结构都是这样{*article_id*, *parent_id*}
如果 article_id 和 parent_id 相同,则显然该文章没有父级。
我想使用最少的代码对数据进行排序,这样对于每篇文章,我都可以轻松地 如果可用,访问它的子孙(嵌套数据)列表。例如(使用上面的示例数据)我应该能够在一天结束时打印:
1
-45
--566
---783
-66
--911
....对于文章 ID 1
我只能整理出最高级别(第一代和第二代)的 ID。获得第 3 代及后续代时遇到问题。
这是我使用的代码:
highest_level = set()
first_level = set()
sub_level = set()
for i in pages_id_list:
id,pid = i['id'],i['pid']
if id == pid:
#Pages of the highest hierarchy
highest_level.add(id)
for i in pages_id_list:
id,pid = i['id'],i['pid']
if id != pid :
if pid in highest_level:
#First child pages
first_level.add(id)
else:
sub_level.add(id)
很遗憾,我的代码不起作用。
我们将不胜感激任何朝着正确方向的帮助/推动。 谢谢
大卫
【问题讨论】:
-
您是否尝试过使用
while循环?
标签: python list sorting set hierarchical-data