Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Python comparing values from two dictionaries where keys match and one set of values is greater

I have the following datasets:

kpi = {
    "latency": 3,
    "cpu_utilisation": 0.98,
    "memory_utilisation": 0.95,
    "MIR": 200,
}

ns_metrics = {
    "timestamp": "2022-10-04T15:24:10.765000",
    "ns_id": "cache",
    "ns_data": {
        "cpu_utilisation": 0.012666666666700622,
        "memory_utilisation": 8.68265852766783,
    },
}

What I’m looking for is an elegant way to compare the cpu_utilisation and memory_utilisation values from each dictionary and if the two utilisation figures from ns_metrics is greater than kpi, for now, print a message as to which utilisation value was greater,i.e. was it either cpu or memory or both. Naturally, I can do something simple like this:

if ns_metrics["ns_data"]["cpu_utilisation"] > kpi["cpu_utilisation"]:
    print("true: over cpu threshold")

if ns_metrics["ns_data"]["memory_utilisation"] > kpi["memory_utilisation"]:
    print("true: over memory threshold")

But this seems a bit longer winded to have many if conditions, and I was hoping there is a more elegant way of doing it. Any help would be greatly appreciated.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

maybe you can use a loop to do this:

check_list = ["cpu_utilisation", "memory_utilisation"]
for i in check_list:
    if ns_metrics["ns_data"][i] > kpi[i]:
        print("true: over {} threshold".format(i.split('_')[0]))

if the key is different,you can use a mapping dict to do it,like this:

check_mapping = {"cpu_utilisation": "cpu_utilisation_1"}
for kpi_key, ns_key in check_mapping.items():
    ....
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading