I have a dictionary that is structured like so:
Current input:
current_dict = {'TP': {'class_A': 100,
'class_B': 200,
'class_C': 300},
'FP' : {'class_A': 50,
'class_B': 60,
'class_C': 70},
'FN' : {'class_A': 10,
'class_B': 20,
'class_C': 30}
}
However, I would like every class to be the top-level key name and the values to contain the TP, FP, FN counts per class, like so:
Desired output:
desired_dict = {'class_A': {'TP' : 100, 'FP': 50, 'FN': 10},
'class_B': {'FP' : 200, 'FP': 60, 'FN': 70},
'class_C': {'FN' : 300, 'FP': 70, 'FN': 30},
}
My current code creates the desired_dict default structure. Then I loop through the current_dict and check whether 'TP' and class name match to update the desired_dict default structure (something like this):
for k1,v1 in current_dict.items():
for k2, v2 in v1.items():
if k1 == 'TP' and v2=='class_A':
desired_dict['class_A']['TP'].update(v2)
This is very inefficient as I would need to create many if statements to match class and count type. Any ideas on efficient ways to get the desired_dict? Is there a way to group these by classes A, B, C?