@Daniel254

Как сгруппировать список словарей?

Есть такой набор данных:
[
        {'id': 1, 'qty': 1},
        {'id': 1, 'qty': 2},
        {'id': 2, 'qty': 1},
        {'id': 2, 'qty': 2},
        {'id': 2, 'qty': 3},
        {'id': 3, 'qty': 6},
]

Нужно получить такой:
[
        {'id': 1, 'qty': 3, 'id_count': 2},
        {'id': 2, 'qty': 6, 'id_count': 3},
        {'id': 3, 'qty': 6, 'id_count': 1},
]

То есть, нужно сгруппировать по ключу id, сложив значения qty и подсчитать количество изначальных словарей в группе (id_count).
  • Вопрос задан
  • 253 просмотра
Решения вопроса 1
0xD34F
@0xD34F
ids = set(n['id'] for n in arr)
grouped = [ (i, [ n['qty'] for n in arr if n['id'] == i ]) for i in ids ]
summed = [ { 'id': k, 'qty': sum(v), 'id_count': len(v) } for k, v in grouped ]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект
01 мая 2024, в 00:20
15000 руб./за проект