Python列表到多层JSON

时间:2019-02-21 14:21:43

标签: json

我是Python初学者,我有一个列表需要转换为json格式。 我希望得到一些帮助。

原始数据:

result = [('A', 'a1', '1'),
          ('A', 'a2', '2'),
          ('B', 'b1', '1'),
          ('B', 'b2', '2')]

我想要的结果:

[{'type':'A',
  'data':[{'name':'a1','url':'1'},
          {'name':'a2','url':'2'}]
 },
 {'type': 'B',
  'data': [{'name':'b1', 'url': '1'},
           {'name':'b2','url':'2'}]
 }]

1 个答案:

答案 0 :(得分:0)

('A', 'a1', 1)是可重复的元组的示例。

result = [('A', 'a1', '1'),
          ('A', 'a2', '2'),
          ('B', 'b1', '1'),
          ('B', 'b2', '2')]
type_list = []
for tup in result:
    if len(type_list) == 0:
        type_list.append({'type': tup[0], 'data': [{ 'name': tup[1], 'url': tup[2] }]})
    else:
        for type_obj in type_list:
            found = False
            if type_obj['type'] == tup[0]:
                type_obj['data'].append({ 'name': tup[1], 'url': tup[2] })
                found = True
                break 
        if not found: 
            type_list.append({'type': tup[0], 'data': [{ 'name': tup[1], 'url': tup[2] }]})
print(type_list)

打印:

[{'type': 'A', 'data': [{'name': 'a1', 'url': '1'}, {'name': 'a2', 'url': '2'}]}, {'type': 'B', 'data': [{'name': 'b1', 'url': '1'}, {'name': 'b2', 'url': '2'}]}]