首页 > 解决方案 > Python列表到多级json

问题描述

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

原始数据:</p>

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

我想要的结果:</p>

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

标签: json

解决方案


('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'}]}]

推荐阅读