Как создать сводку значений словаря через 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_pythonista программу на Python, я пытаюсь найти для 9X_python-3.x каждой среды, сколько типов ошибок наблюдается 9X_pythonista и сколько их. Что-то вроде

{ '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.x этого с помощью Python itertools groupby. Вот 9X_python-3.x фрагмент того, что я пытаюсь сделать, но 9X_py3k я не смог достичь именно того, чего хотел. Любая 9X_pythonic помощь будет оценена

 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_py3 можно отслеживать количество ошибок:

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_pythonic введенный вами пример, 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_py3k

2
0

Ответ #3

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

Я не знаком с mongodb, просто попробуйте 9X_python-3.8 перенести его в 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