Итак, просто для обновления, основываясь на ответе @ Code-Apprentice, я переписал свой код следующим образом:
market = [
{'selection_id': 1099, 'value': '11', 'value_name': 'a'},
{'selection_id': 1099, 'value': '78', 'value_name': 'p'},
{'selection_id': 1097, 'value': '39', 'value_name': 'b'},
{'selection_id': 1097, 'value': '52', 'value_name': 'f'},
{'selection_id': 1098, 'value': '98', 'value_name': 'd'},
{'selection_id': 1099, 'value': '13', 'value_name': 'y'},
{'selection_id': 1098, 'value': '4', 'value_name': 'r'},
]
new_structure = {}
new_structure2 = []
for z in market:
new_structure.setdefault(z['selection_id'], []).append({'value': z['value'],
'value_name': z['value_name']})
t = [{'selection_id': m, 'value_dict': n} for m, n in new_structure.items()]
new_structure2.append(t)
print(new_structure2)
Что затем приближает меня к желаемому результату. Единственная оставшаяся проблема - это лишний список (т.е. [[{....}]] вместо [{...}]), я полагаю, что это, вероятно, из-за того, как я написал строку t = ....
Вот мой вывод, я опубликую обновление, как только я избавлюсь от этого дополнительного списка на случай, если ответ будет полезен кому-либо еще (но, пожалуйста, не стесняйтесь, если вы заметите его передо мной):
[[{'selection_id': 1099,
'value_dict': [{'value': '11', 'value_name': 'a'},
{'value': '78', 'value_name': 'p'},
{'value': '13', 'value_name': 'y'}]},
{'selection_id': 1097,
'value_dict': [{'value': '39', 'value_name': 'b'},
{'value': '52', 'value_name': 'f'}]},
{'selection_id': 1098,
'value_dict': [{'value': '98', 'value_name': 'd'},
{'value': '4', 'value_name': 'r'}]}]]
Так смешно, просто! Я был слишком сложен, просто удалил лишнюю ссылку на список:
market = [
{'selection_id': 1099, 'value': '11', 'value_name': 'a'},
{'selection_id': 1099, 'value': '78', 'value_name': 'p'},
{'selection_id': 1097, 'value': '39', 'value_name': 'b'},
{'selection_id': 1097, 'value': '52', 'value_name': 'f'},
{'selection_id': 1098, 'value': '98', 'value_name': 'd'},
{'selection_id': 1099, 'value': '13', 'value_name': 'y'},
{'selection_id': 1098, 'value': '4', 'value_name': 'r'},
]
new_structure = {}
for z in market:
new_structure.setdefault(z['selection_id'], []).append({'value': z['value'],
'value_name': z['value_name']})
new_structure2 = [{'selection_id': m, 'value_dict': n} for m, n in new_structure.items()]