У меня есть базовые данные, подобные этому, уникальный идентификатор в базе данных в d_id. (данные с именем, как «вход»)Преобразование Список dicts вложенный список dicts
[
{
"d_id": "a1",
"d_name": "Fishing",
"location": "ABC",
"location_id": 1,
"rest_id": 2,
"rest_name": "Grilling"
},
{
"d_id": "a2",
"d_name": "catching",
"location": "ABC",
"location_id": 1,
"rest_id": 3,
"rest_name": "Kayaking"
},
{
"d_id": "a3",
"d_name": "Fishing2",
"location": "ABC",
"location_id": 1,
"rest_id": 2,
"rest_name": "Grilling"
},
{
"d_id": "a4",
"d_name": "Watering",
"location": "DEF",
"location_id": 2,
"rest_id": 4,
"rest_name": "Careoff"
}
]
Я хочу сделать словарь следующим образом, который является вложенной JSON классифицированы по LOCATION_ID, rest_id и d_id:
населенные пункты будут иметь несколько мест, каждое место будет иметь множественный rest_id, и каждое остальное будет иметь несколько d_id-х
{
"localities" : [
{
"location": "ABC",
"location_id": 1,
"rest_details": [
{
"rest_id": 2,
"rest_name": "Grilling",
"d_details" : [
{
"d_id" : "a1",
"d_name" : "Fishing"
},
{
"d_id" : "a3",
"d_name" : "Fishing2"
}
]
},
{
"rest_id": 3,
"rest_name": "Kayaking",
"d_details" : [
{
"d_id" : "a2",
"d_name" : "catching"
}
]
}
]
},
{
"location" : "DEF",
"location_id": 2,
"rest_details": [
{
"rest_id" : 4,
"rest_name" : "Careoff",
"d_details" : [
{
"d_id" : "a4",
"d_name": "Watering"
}
]
}
]
}
]
}
Я попытался следующим за последние несколько дней, в котором я попытался отделить данные в location_info, rest_info, d_info:
для размещения информации
location_info = []
location_fields = {'location', 'location_id', 'd_id', 'rest_id' }
for item in input:
loc = {key:value for key,value in item.items() if key in location_fields}
location_info.append(loc)
для уникальных записей location_info
k=1
while k<len(location_info):
if location_info[k] == location_info[k-1]:
location_info.pop(k-1)
else:
k = k+1
для rest_info
rest_info = []
rest_fields = {'rest_name','rest_id', 'd_id', 'loc_id'}
for item in input:
res = {key:value for key,value in item.items() if key in restaurant_fields}
restaurant_info.append(res)
для d_info
d_info = []
d_fields = {'d_id', 'd_name', 'location_id'}
for item in input:
dis = {key:value for key,value in item.items() if key in d_fields}
d_info.append(dis)
для merging rest_info с location_info
for ta in location_info:
for tb in rest_info:
if ta['loc_id'] == tb['loc_id']:
ta['localities'] = tb
tb не производит первый этап ожидаемого результата.
Вы должны сначала попробовать, что хотите, а затем искать или помогать. И если вы попытались это сделать, пожалуйста, позаботьтесь об этом. –
Вы в основном просите людей сделать это за вас. Этот сайт посвящен помощи людям с конкретными проблемами, а не бесплатной услугой кодирования. –
@TanveerAlam намерение было обратиться за помощью по этому вопросу, и я стою исправлен как новый пользователь. Извинения. Я добавил информацию, которую я попытался. в случае, если вы могли бы посоветоваться, было бы очень полезно. –