如何在python中生成json格式的字典数据

2024-09-27 19:26:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,曾试图理解如何使用字典操作,但却被夹在两者之间。你知道吗

我有如下数据:

[{'mesure':'10', 'name': 'mumbai', 'age': '15', 'class':'kg1'}, {'mesure':'20', 'name': 'hyd', 'age': '20', 'class':'kg2'},{'mesure':'11', 'name': 'mumbai', 'age': '145', 'class':'kg6'}, {'mesure':'21', 'name': 'hyd', 'age': '20', 'class':'kg2'}, {'mesure':'40', 'name': 'pune', 'age': '30', 'class':'kg4'}, {'mesure':'30', 'name': 'chennai', 'age': '25', 'class':'kg3'}, {'mesure':'41', 'name': 'pune', 'age': '30', 'class':'kg7'}, {'mesure':'22', 'name': 'hyd', 'age': '20', 'class':'kg2'}{'mesure':'12', 'name': 'mumbai', 'age': '40', 'class':'kg7'}, {'mesure':'46', 'name': 'pune', 'age': '30', 'class':'kg8'}]

I want to convert it in format like:

[{"Name": "mumbai",
        "data": [{'mesure':'10', 'name': 'mumbai', 'age': '15', 'class':'kg1'}, 
                 {'mesure':'11', 'name': 'mumbai', 'age': '145', 'class':'kg6'}, 
                 {'mesure':'12', 'name': 'mumbai', 'age': '40', 'class':'kg7'}]}

{"Name": "hyd", 
           "data":[{'mesure':'20', 'name': 'hyd', 'age': '20', 'class':'kg2'},
                   {'mesure':'21', 'name': 'hyd', 'age': '20', 'class':'kg2'},
                    {'mesure':'22', 'name': 'hyd', 'age': '20', 'class':'kg2'}]}

{"Name": "pune", 
             "data":[{'mesure':'40', 'name': 'pune', 'age': '30', 'class':'kg4'}, 
                      {'mesure':'41', 'name': 'pune', 'age': '30', 'class':'kg7'}, 
                      {'mesure':'46', 'name': 'pune', 'age': '30', 'class':'kg8'}]}]

我试过:

def dir_data(data):
    main_list = []
    main_dir = []
    for i in data:
        names = i["name"]
        main_dir.append({"name": names, "data": i})
    print(main_dir)


if __name__== "__main__":
    data = [{'mesure':'10', 'name': 'mumbai', 'age': '15', 'class':'kg1'}, {'mesure':'20', 'name': 'hyd', 'age': '20', 'class':'kg2'},{'mesure':'11', 'name': 'mumbai', 'age': '145', 'class':'kg6'}, {'mesure':'21', 'name': 'hyd', 'age': '20', 'class':'kg2'}, {'mesure':'40', 'name': 'pune', 'age': '30', 'class':'kg4'}, {'mesure':'30', 'name': 'chennai', 'age': '25', 'class':'kg3'}, {'mesure':'41', 'name': 'pune', 'age': '30', 'class':'kg7'}, {'mesure':'22', 'name': 'hyd', 'age': '20', 'class':'kg2'}{'mesure':'12', 'name': 'mumbai', 'age': '40', 'class':'kg7'}, {'mesure':'46', 'name': 'pune', 'age': '30', 'class':'kg8'}]

    dir_data(data)

我尝试上面的代码,但无法得到准确的输出,所以请指导我得到它。。。。你知道吗

谢谢


Tags: nameagedatamaindirclassmumbaimesure
3条回答

我可以看到你写的代码似乎在工作,但你没有返回的函数,逗号缺失的数据,也有一些错误的方式调用的函数。 就这样调用函数

def dir_data(data):
    main_list = []
    main_dir = []
    for i in data:
        names = i["name"]
        main_dir.append({"name": names, "data": i})
    return(main_dir)

data = [{'mesure':'10', 'name': 'mumbai', 'age': '15', 'class':'kg1'}, {'mesure':'20', 'name': 'hyd', 'age': '20', 'class':'kg2'},{'mesure':'11', 'name': 'mumbai', 'age': '145', 'class':'kg6'}, {'mesure':'21', 'name': 'hyd', 'age': '20', 'class':'kg2'}, {'mesure':'40', 'name': 'pune', 'age': '30', 'class':'kg4'}, {'mesure':'30', 'name': 'chennai', 'age': '25', 'class':'kg3'}, {'mesure':'41', 'name': 'pune', 'age': '30', 'class':'kg7'}, {'mesure':'22', 'name': 'hyd', 'age': '20', 'class':'kg2'},{'mesure':'12', 'name': 'mumbai', 'age': '40', 'class':'kg7'}, {'mesure':'46', 'name': 'pune', 'age': '30', 'class':'kg8'}]
dir_data(data)

您可以使用下面的代码获得所需的解决方案

test_data = [{'mesure': '10', 'name': 'mumbai', 'age': '15', 'class': 'kg1'}, {'mesure': '20', 'name': 'hyd', 'age': '20', 'class': 'kg2'}, {'mesure': '11', 'name': 'mumbai', 'age': '145', 'class': 'kg6'}, {'mesure': '21', 'name': 'hyd', 'age': '20', 'class': 'kg2'}, {'mesure': '40', 'name': 'pune', 'age': '30', 'class': 'kg4'}, {'mesure': '30', 'name': 'chennai', 'age': '25', 'class': 'kg3'}, {'mesure': '41', 'name': 'pune', 'age': '30', 'class': 'kg7'}, {'mesure': '22', 'name': 'hyd', 'age': '20', 'class': 'kg2'}, {'mesure': '12', 'name': 'mumbai', 'age': '40', 'class': 'kg7'}, {'mesure': '46', 'name': 'pune', 'age': '30', 'class': 'kg8'}]

dic = dict()
for i in test_data:
    dic.setdefault(i['name'].title(),[]).append(i)
result = [{"name":k ,"data":v} for k,v in dic.items()]

输出

 [{'data': [{'class': 'kg4', 'age': '30', 'name': 'pune', 'mesure': '40'},
            {'class': 'kg7', 'age': '30', 'name': 'pune', 'mesure': '41'},
            {'class': 'kg8', 'age': '30', 'name': 'pune', 'mesure': '46'}], 'name': 'Pune'},

  {'data': [{'class': 'kg3', 'age': '25', 'name': 'chennai', 'mesure': '30'}], 'name': 'Chennai'}, 

  { 'data': [{'class': 'kg2', 'age': '20', 'name': 'hyd', 'mesure': '20'},
               {'class': 'kg2', 'age': '20', 'name': 'hyd', 'mesure': '21'},
               {'class': 'kg2', 'age': '20', 'name': 'hyd', 'mesure': '22'}], 'name': 'Hyd'},
                {
      'data': [{'class': 'kg1', 'age': '15', 'name': 'mumbai', 'mesure': '10'},
               {'class': 'kg6', 'age': '145', 'name': 'mumbai', 'mesure': '11'},
               {'class': 'kg7', 'age': '40', 'name': 'mumbai', 'mesure': '12'}], 'name': 'Mumbai'}]
    def dir_data(data):
        items = []
        names = []
        for i in data:
            if i['name'] not in names:
                items.append({"Name": i['name'], "data": [i]})
                names.append(i['name'])
            else:
                iname = names.index(i['name'])
                items[iname]['data'].append(i)
    return items

    data = [{'mesure':'10', 'name': 'mumbai', 'age': '15', 'class':'kg1'},
    {'mesure':'20', 'name': 'hyd', 'age': '20', 'class':'kg2'},
    {'mesure':'11', 'name': 'mumbai', 'age': '145', 'class':'kg6'},
    {'mesure':'21', 'name': 'hyd', 'age': '20', 'class':'kg2'},
    {'mesure':'40', 'name': 'pune', 'age': '30', 'class':'kg4'},
    {'mesure':'30', 'name': 'chennai', 'age': '25', 'class':'kg3'},
    {'mesure':'41', 'name': 'pune', 'age': '30', 'class':'kg7'},
    {'mesure':'22', 'name': 'hyd', 'age': '20', 'class':'kg2'},
    {'mesure':'12', 'name': 'mumbai', 'age': '40', 'class':'kg7'},
    {'mesure':'46', 'name': 'pune', 'age': '30', 'class':'kg8'}
    ]
    print(dir_data(data))

试试那个。你知道吗

相关问题 更多 >

    热门问题