CSV в JSON с массивом объектов в Python

У меня есть данные, показанные ниже в CSV:

idd,name,age
1, rahul, 28
1, rahul, 33
3, virat, 30

Если idd и имя двух или более записей совпадают, тогда значение age должно быть сохранено как единый массив объектов.

Я написал ниже код на Python3, я читаю свой файл csv, который является test1.csv, а затем использую groupby для создания массива json

import csv
import json
from itertools import groupby

with open('C:/AmanData/PythonWorkShop/test1.csv','r') as csv_ledger:
    r = csv.DictReader(csv_ledger)
    data = [dict(d) for d in r]
    groups = []

    for k, g in groupby(data, lambda r: (r['idd'], r['name'])):

        groups.append({
            "name": k[1],
            "idd": k[0],
            "age": [{k: v for k, v in d.items() if k not in ['idd', 'name']} for d in list(g)]
        })


print(json.dumps(groups[:10], indent=4))

Вывод, который я получаю:-

[
    {
        "name": "[ rahul]",
        "idd": "1",
        "age": [
            {
                "age": " 28"
            },
            {
                "age": " 33"
            }
        ]
    },
    {
        "name": "[ virat]",
        "idd": "3",
        "age": [
            {
                "age": " 30"
            }
        ]
    }
]

Ожидаемый результат:-

[
    {
        "name": "[ rahul]",
        "idd": "1",
        "age": [ "28","33"]
    },
    {
        "name": "[ virat]",
        "idd": "3",
        "age": ["30"]
    }
]

Любая помощь будет высоко ценится.

0 ответов

Другие вопросы по тегам