Как создать сводку значений словаря через Python?

У меня есть приведенный ниже образец словаря,

errors = [{'PartitionKey': '34', 'RowKey': '14', 'Component': 'mamba', 'Environment': 'QA', 'Error': '404 not found', 'Group': 'Test', 'Job': 'cutting', 'JobType': 'automated'}, {'PartitionKey': '35', 'RowKey': '15', 'Component': 'mamba', 'Environment': 'QA', 'Error': '404 not found', 'Group': 'Test', 'Job': 'cutting', 'JobType': 'automated'}, {'PartitionKey': '36', 'RowKey': '16', 'Component': 'mamba', 'Environment': 'Dev', 'Error': '404 not found', 'Group': 'random', 'Job': 'moping', 'JobType': 'manual'}, {'PartitionKey': '37', 'RowKey': '17', 'Component': 'mamba', 'Environment': 'QA', 'Error': '404 not found', 'Group': 'Test', 'Job': 'cutting', 'JobType': 'automated'}, {'PartitionKey': '38', 'RowKey': '18', 'Component': 'mamba', 'Environment': 'Dev', 'Error': '404 not found', 'Group': 'random', 'Job': 'moping', 'JobType': 'manual'},{'PartitionKey': '39', 'RowKey': '19', 'Component': 'Scorpio', 'Environment': 'Dev', 'Error': '500 internal error', 'Group': 'minerva', 'Job': 'cleaning', 'JobType': 'manual'},{'PartitionKey': '39', 'RowKey': '19', 'Component': 'Scorpio', 'Environment': 'Dev', 'Error': '500 internal error', 'Group': 'minerva', 'Job': 'cleaning', 'JobType': 'manual'}]

Используя 9X_python-3 программу на Python, я пытаюсь найти для 9X_python каждой среды, сколько типов ошибок наблюдается 9X_py3k и сколько их. Что-то вроде

{
    'QA': {
       '404 not found': 10,
       '500 internal error': 20,
       '503 xyz': 30
    },
    'DEV': {
       '404 not found': 10,
       '500 internal error': 20,
       '503 xyz': 30    
     }  
}

Я пытаюсь добиться 9X_python-3 этого с помощью Python itertools groupby. Вот 9X_pythonista фрагмент того, что я пытаюсь сделать, но 9X_py3 я не смог достичь именно того, чего хотел. Любая 9X_python-3.8 помощь будет оценена

   from itertools import groupby
   grouped = collections.defaultdict(list)
   newgrouped = collections.defaultdict(list)
 
   for item in errors:
       grouped[item['Environment']].append(item)

   for key, vals in grouped.items():
       for val in valss:
           newgrouped[group['Error']].append(group)

4
0
3
Общее количество ответов: 3

Ответ #1

Ответ на вопрос: Как создать сводку значений словаря через Python?

Вы можете использовать dict.setdefault для инициализации 9X_python-interpreter несуществующего ключа с суб-словом, где 9X_python3 можно отслеживать количество ошибок:

from operator import itemgetter

summary = {}
for env, error in map(itemgetter('Environment', 'Error'), errors):
    summary.setdefault(env, {})[error] = summary.get(env, {}).get(error, 0) + 1

Учитывая 9X_python введенный вами пример, summary станет:

{'QA': {'404 not found': 3}, 'Dev': {'404 not found': 2, '500 internal error': 2}}

Демонстрация: https://replit.com/@blhsing/BogusVirtualKnowledge

11
0

Ответ #2

Ответ на вопрос: Как создать сводку значений словаря через Python?

Похоже, вы хотите dict(dict(int)).

group = defaultdict(dict)
for a in errors:
    if not group[a['Environment']]:
        group[a['Environment']] = defaultdict(int)
    group[a['Environment']][a['Error']]+=1
print(group)

9X_itertools

2
0

Ответ #3

Ответ на вопрос: Как создать сводку значений словаря через Python?

Я не знаком с mongodb, просто попробуйте 9X_pythonista перенести его в dataframe:

errors_df = pd.DataFrame()

for dict in errors:
        errors_df = errors_df.append(dict, ignore_index=True) 

errors_env = errors_df.groupby(['Environment', 'Error']).count()

                                PartitionKey  RowKey  Component  Group  Job  
Environment Error                                                             
Dev         404 not found                  2       2          2      2    2   
            500 internal error             2       2          2      2    2   
QA          404 not found                  3       3          3      3    3   

2
0