пожалуйста, помогите мне :)Группировка и сумма список словаря Python
Python 3.5
У меня есть список Dict:
[
{
'A':'string1',
'B':'string_5',
'C':'string_9,
...
'N':'stringN',
'metric1':5,
'metric2':7
},
{
'A':'string1',
'B':'string_5',
'C':'string_11,...
'N':'stringN',
'metric1':10,
'metric2':45
},
{
'A':'string2',
'B':'string_7',
'C':'string_15,
...
'N':'stringN',
'metric1':234,
'metric2':78
},
.......
]
В выходной я хочу получить:
[
{
'A':'string1', 'metric1':sum(all metric1 where 'A'='string1'),
'metric2':sum(all metric2 where 'A'='string1'),
'B': [
{
'B':'string_5',
'metric1':sum(all metric1 for combination where 'A' in
'string1' and 'B' in string_5),
'metric2':sum(all metric2 , where combination Similarly 'metric1'),
'C':[
{
'C':'string_9', 'metric1':sum(all metric_1 for
combination where 'A' in` 'string1' and 'B' in string_5 and 'C' is 'string_9'),
'metric2':sum(...)
},
{
'C':'string_11',
'metric1':sum(...)
'metric2':sum(..)
}
]
}
]
},
{
'A':'string_2', 'metric1':sum(all metric1 where 'A'='string2'),
'metric2':sum(...),
'B': [
{
'B':'string_7','metric1':sum(all metric1 for
combination where 'A'='string_2' and 'B'='string_7'),
'metric2':'sum(...),
'C': [
{
'C':'string_15',
'metric1' :sum(...),
'metric2':'sum(...)
}
]
}
]
},
....
.....
]
Таким образом, вывод должен группировать вход для каждой клавиши уровня (A, B, C, .. N) и суммировать все значения метрики для каждой группировки. В каждом типе родительского уровня он имеет ключ с именем следующего уровня со значением массива следующих элементов сгруппированных уровней, где родителем элементов является этот ключ.
Анинные решения?
Я попытался вызов рекурсивных функций для цикла ввода Словаря как дерево, но я получаю результат, где сгруппирован только одна ветви, и только одна ветви следующей ветви, и т.д.
Пожалуйста, объясните основную идею желаемого результата, поэтому нам не нужно тратить много времени, пытаясь понять это. –
@RoryDaulton Хорошо, я отредактировал мой вопрос – SmartSt