从Wordpress数据库中检索了以下菜单项及其层次结构元组。 第一个值是菜单项的名称,第二个是 item_id ,第三个是 parent_id。 如果 parent_id 为0,则它是顶级元素。
('Contact', 72, 0)
('Impressumm', 74, 0)
('Login', 227, 0)
('Company', 65, 0)
('References', 83, 65)
('AboutUs', 85, 65)
('Press', 87, 65)
('Solutions', 76, 0)
('ProductA', 242, 76)
('TechnologyA', 316, 242)
('Programming', 318, 242)
('Soldering', 321, 242)
('Welding', 323, 242)
('ProductB', 245, 76)
('Features', 326, 245)
('CADimport', 328, 245)
('Measuring', 331, 245)
('Surfaces', 333, 245)
('Editor', 248, 76)
('Simulation', 251, 76)
('Postprocessing', 254, 76)
('Manufacturing', 79, 0)
('Parts', 257, 79)
('Date', 259, 79)
('Tools', 261, 79)
('Communication', 263, 79)
('WebApps', 296, 79)
('Services', 69, 0)
('Training', 287, 69)
('Support', 285, 69)
('Forum', 289, 69)
('Events', 187, 0)
('Education', 269, 187)
('Workshops', 272, 187)
('Fairs', 275, 187)
('Seminars', 281, 187)
('Meetings', 278, 187)
对于元组数组中的每个元组,我想添加完整的层次结构。 例如。
name,item_id,hierarchy
('Contact',72,'/Contact')
('Solutions',76,'/Solutions')
('Programming',318,'/Solutions/ProductA/Programming')
此处的唯一键是 item_id (第二个元素)。名称可能显示为重复或多次。
我认为这可以在iPython中使用字典来完成。由于item_id可能出现在元组列表中(例如,作为parent_id),因此在定义它们之前,必须至少在数组中进行一次。
有人能给我一些启动的想法吗,
迭代一次数组并构建字典
其次,通过item_id(递归?)来查看字典 查找parent_id并将名称附加到第二个值, 我们称之为层次结构。
答案 0 :(得分:1)
创建一个递归查找项目父项的函数:
def getHierarchy(item_id,array_of_tuple,separator="/"):
for i, (tuple_name, tuple_id, tuple_parent_id) in enumerate(array_of_tuple):
if item_id == tuple_id:
if tuple_parent_id == 0:
return separator+tuple_name
else:
return separator+tuple_name+getHierarchy(tuple_parent_id,array_of_tuple)
return ""
它产生:
>>print getHierarchy(289,array_of_tuples)
>>/Forum/Services