Я рассмотрел решение проблемы, и я не могу найти что-либо, что работает так, как я пытаюсь достичь.функция для агрегирования набора данных и вывода вложенного словаря
Я хочу создать функцию Python, которая имеет три аргумента
- data_object - это список словарей, где каждый словарь имеет то же поле, - где-то от 1-п количества «измерения» полей в группу от и от 1-го количества полей метрик, подлежащих агрегированию.
- размеры - список размеров полей в группе
- метрик - список метрических полей агрегировать
так, как я решить эту проблему ранее заключается в использовании SetDefault:
struc = {}
for row in rows:
year = row['year']
month = row['month']
affiliate = row['affiliate']
website = row['website']
pgroup = row['product_group']
sales = row['sales']
cost = row['cost']
struc.setdefault(year, {})
struc[year].setdefault(month, {})
struc[year][month].setdefault(affiliate, {})
struc[year][month][affiliate].setdefault(website, {})
struc[year][month][affiliate][website].setdefault(pgroup, {'sales':0, 'cost':0})
struc[year][month][affiliate][website][pgroup]['sales'] += sales
struc[year][month][affiliate][website][pgroup]['cost'] += cost
Проблема в том, что имена полей, количество полей измерений и количество полей показателей будут разными, если я ищу другой набор данных.
Я видел сообщения о рекурсивных функциях и defaultdict, но (если я их не понял), все они либо требуют, чтобы вы знали, сколько полей измерения и метрики вы хотите работать, или они не выводят объект словаря, который мне нужен.
просто из интереса @thefourtheye, почему вы изменить это? Я специально пытаюсь сделать функцию, которая будет использоваться в Python, так ли это неразумно ставить это в заголовок вопроса? –
Фактический язык или технологии предпочтительнее в тегах, а не в названиях. Вот почему я отредактировал это. – thefourtheye