我的词典列表如下,创建词典列表包含嵌套词典
[{"vehicle_class": "c1", "vehicle_class_count1": 16, "vehicle_usage_count1": 29, "vehicle_usage": "u1", "vehicle_type_count1": 16, "vehicle_type": "t1"}, {"vehicle_class": "c2", "vehicle_class_count1": 11, "vehicle_usage_count1": 29, "vehicle_usage": "u1", "vehicle_type_count1": 11, "vehicle_type": "t1"},{"vehicle_class": "c2", "vehicle_class_count1": 1, "vehicle_usage_count1": 29, "vehicle_usage": "u2", "vehicle_type_count1": 1, "vehicle_type": "t3"},{"vehicle_class": "c3", "vehicle_class_count1": 1, "vehicle_usage_count1": 29, "vehicle_usage": "u2", "vehicle_type_count1": 1, "vehicle_type": "t2"}]
从中我想形成字典的另一个列表如下,
[
{
"name": "u1",
"imageURL": "",
"type": "u1",
"children": [
{
"name": "t1",
"imageURL": "",
"type": "t1",
"size": 9221
"children" : [
{"name": "c1",
"imageURL": "",
"type": "c1",
"size": 9221},
{"name": "c2",
"imageURL": "",
"type": "c2",
"size": 9221}
]
}
],
"size": 10393
},
{
"name": "u2",
"imageURL": "",
"type": "u2",
"children": [
{
"name": "t2",
"imageURL": "",
"type": "t2",
"size": 9221,
"children":[
"name": "c3",
"imageURL": "",
"type": "c3",
"size": 9221
]
},
{
"imageURL": "",
"type": "t3",
"name": "t3",
"size": 1058,
"children": [
"imageURL": "",
"type": "c2",
"name": "c2",
"size": 1058
]
}
],
"size": 10393
},
]
这是我迄今为止所尝试过的,我曾经得到了预期结果的一半。
result_dict=[] # The above mentioned list comes here
result_list = []
for i in ['vehicle_usage','vehicle_type','vehicle_class']: # This is a hierarchy which I assign here dynamically can contain any number of values.
for item in range(0, len(result_dict)):
for key,value in result_dict[item].items():
if key == i:
if not any(d['name'] == value for d in result_list):
result = {}
result['name'] = value
result['imageURL'] = ''
result['type'] = value
result['size'] = result_dict[item]['%s_count1' % i]
if i != len(result_dict):
result['children'] =[]
print result
result_list.append(result)
print result_list # Final list processed according to the required format.
预计result_list顶尖水平字典必须包含像vehicle_usage_count1
各自的值vehicle_usage
不同的值。
第二级别(即儿童名单)将包含第二级别等。该数据发送到需要此格式的d3插件。
水平将依赖于价值数数前来
['vehicle_usage','vehicle_type','vehicle_class']
从我的代码的所有级别写入到同一水平。我希望他们写入正确的儿童名单。
那么,你的代码只尝试'result_list.append(结果)'所以很明显,这一切都在同一水平上。 – abrunet
@abrunet是的,但我怎么能说,去相关的儿童节点? –
您应该尝试从初始词典中提取数据,迭代一次以提取第一级数据。然后迭代你创建的第一级,并为你的第一级的每个元素,从你的初始词典等检索数据... – abrunet