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"]
}
]
Любая помощь будет высоко ценится.