У меня есть данные, показанные в виде csv, как показано ниже:
idd,name,age
1, rahul, 28
1, rahul, 33
3, virat, 30
Если id и имя двух или более записей совпадают, то значение 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"]
}
]
Любая помощь будет высоко оценена.