У меня есть следующий списокОбъединить элементы по ключу в списке
some_list = [{'key': 'YOUNG', 'x': 22, 'y': 0.9},
{'key': 'OLD', 'x': 45, 'y': 0.6},
{'key': 'OLD', 'x': 40, 'y': 0.3},
{'key': 'YOUNG', 'x': 25, 'y': 0.3}]
, и я хотел бы изменить его на:
[{'key': 'YOUNG', 'values': [ {'x': 25, 'y': 0.3}, {'x': 22, 'y': 0.9} ]}
{'key': 'OLD', 'values': [ {'x': 40, 'y': 0.3}, {'x': 45, 'y': 0.6} ]}]
Добавлено несколько моих попыток
arr = [{'key': 'YOUNG', 'x': 22, 'y': 0.9},
{'key': 'OLD', 'x': 45, 'y': 0.6},
{'key': 'OLD', 'x': 40, 'y': 0.3},
{'key': 'YOUNG', 'x': 25, 'y': 0.3}]
all_keys = []
for item in arr:
all_keys.append(item['key'])
all_keys = list(set(all_keys))
res = [[{
'key': key,
'values': {'x': each['x'], 'y': each['y']}
} for each in arr if each['key'] == key]
for key in all_keys]
print res
Но результат неверен, он строит больше списков: [[{'values': {'y': 0.6, 'x': 45}, 'key': 'OLD'}, {'val ues ': {' y ': 0.3,' x ': 40},' key ':' OLD '}], [{' values ': {' y ': 0.9,' x ': 22},' key ' : 'YOUNG'}, {'values': {'y': 0.3, 'x': 25}, 'key': 'YOUNG'}]]
Спасибо.
Опубликовать свой atte mpts .. –
Stackoverflow не так, другие люди будут писать для вас код. Это так, что другие люди помогут вам понять, почему вы делаете что-то неправильно – ATLUS
Pardon, я пришел из мира JavaScript, где я могу приблизиться к цели, итерируя список и переходя к другому. – Novitoll