我有一个将值添加到OrderedDict的循环:
Table SyTree:
id |名称|如此可见| parent_id
1 |目录| [null] |真| 0
362 |衣服10 |真实| 1
54 |盘子| 20 |真实| 1
.......
2 | new_year_pr | 160 |真实| 1
340 | new_year_package | 0 |真实| 2
338 | new_year_off | 0 |真实| 2
子类别的即,parent_id与需要挂钩的类别的id匹配。我为地图(站点树)全部完成]
qs_catalog_items = SyTree.objects.filter(visible=True).order_by('parent_id', 'so')
od = OrderedDict()
for obj in qs_catalog_items:
if obj.parent_id in od:
od[obj.parent_id].items.append(obj)
else:
obj.items = []
od[obj.id] = obj
[请告诉我如何迭代(并打印)它,以使每个OD元素中都有一个list类型的属性。
from collections import OrderedDict
records = [ { 'id': 1 , 'name': 'catalog' , 'visible': True, 'parent':0 },
{ 'id': 362 , 'name': 'clothes' , 'visible': True , 'parent':1 },
{ 'id': 54 , 'name': 'plates' , 'visible': True , 'parent': 1 },
{ 'id': 2 , 'name': 'new_year_pr' , 'visible': True , 'parent': 1 },
{ 'id': 340 , 'name': 'new_year_package' , 'visible': True , 'parent': 2 },
{ 'id': 338 , 'name': 'new_year_off' , 'visible': True , 'parent': 2 } ]
result = OrderedDict()
for record in records:
if record['parent'] in result.keys():
# If 'parent' already created append the new record.
result[ record['parent'] ].append( record )
else:
# Otherwise create the dict entry with the a list as the value.
result[ record[ 'parent'] ] = [ record ]
for key, rec in result.items():
print(key, rec)
# 0 [{'id': 1, 'name': 'catalog', 'visible': True, 'parent': 0}]
# 1 [{'id': 362, 'name': 'clothes', 'visible': True, 'parent': 1},
# {'id': 54, 'name': 'plates', 'visible': True, 'parent': 1},
# {'id': 2, 'name': 'new_year_pr', 'visible': True, 'parent': 1}]
# 2 [{'id': 340, 'name': 'new_year_package', 'visible': True, 'parent': 2},
# {'id': 338, 'name': 'new_year_off', 'visible': True, 'parent': 2}]