Comparison of values in dictionary I have the following dictionary:

results_dict = {'Current model': {'Recall': 0.77,
  'Precision': 0.1,
  'F1_score': 0.18,
  'Frauds': 94},
 'New model': {'Recall': 0.96,
  'Precision': 0.17,
  'F1_score': 0.29,
  'Frauds': 149}}


What I want is to make a comparison for each metric between the two models, and in case the one belonging to the new model is better, adding +1 to a variable i. So far, I have made this:

recall_new = results_dict['New model']['Recall']
recall_current = results_dict['Current model']['Recall']
precision_new = results_dict['New model']['Precision']
precision_current = results_dict['Current model']['Precision']
F1_new = results_dict['New model']['F1_score']
F1_current = results_dict['Current model']['F1_score']
frauds_new = results_dict['New model']['Frauds']
frauds_current = results_dict['Current model']['Frauds']

i = 0

if recall_new &gt; recall_current or recall_new &gt; (recall_current-(0.1)):
    i+=1
if precision_new &gt; precision_current or precision_new &gt; (precision_current-(0.1)):
    i+=1
if F1_new &gt; F1_current or F1_new &gt; (precision_current-(0.1)):
    i+=1
if frauds_new &gt; frauds_current or frauds_new &gt; int(round(frauds_current*1.2,0)):
    i+=1


The code makes what is intended to do but it is very verbose and repetitive and I was wondering whether it could be simplified or not. Thank you!
Index less

Also, you're indexing a lot. Perhaps it's better to seperate the two dicts:

old, new = results_dict["Current model"], results_dict["New model"]


(And what's up with having an underscore in Current_model and a space in New model? That's asking for typos. You're not even consistent with it - in your first code they're both spaces, but in the assignment you use 3 underscores and a space for Current...)

Also, with how you make the checks, one of your conditions always implies the other. You should remove the redundant comparisons. Change:

if recall_new &gt; recall_current or recall_new &gt; (recall_current-(0.1)):
# Into:
if recall_new &gt; recall_current - 0.1:


The additional braces don't do anything, and if recall_new is bigger than current-0.1, then it is also bigger than current. 

Loop

If you look closely, you'll see you're doing the same thing multiple times. So just make it a loop.

Arguably you should make an outside variable for the keys to iterate over, or iterate over the keys of either new or old dict. But if hard-coding is appropriate, it could look a lot like:

new_better = 0  # i is a bad variable name. Names should have meaning.
for key in ("Recall", "Precision", "F1_score"):
    if new[key] &gt; old[key]-0.1:
        new_better += 1
if new["Frauds"] &gt; old["Frauds"]*1.2:
    new_better += 1


Note that I removed your rounding. Python has no issues transforming a float to the closest integer by means of int(), but neither does it have a problem with comparing ints to floats. I did notice that your adjustments make it easier to score an increment for the first three variables, but harder for the fourth. Is this intentional?