Home > Enterprise >  comparing inner dictionaries in Python
comparing inner dictionaries in Python

Time:04-02

I am trying to create a Python function that receives a dictionary whose values are inner dictionaries. If the keys of the inner dictionaries are the same, it should return 1, if not it should return 0. This is the code I tried:

def f(dct: dict) -> int:
    for i in range(len(dct)):
        for j in range(len(dct)):
            dct1 = list(dct.values())
        if dct1[i].keys() == dct1[j].keys():
            return 1
        else:
            return 0

it actually worked when the input dictionary have only two inner dictionaries but didn't work for three. For example:

f(
    {
        "A": {1: "a", 2: "b"},
        "B": {2: "c", 3: "d"},
    }
)

returned 0 (which is the result I wanted) but

f(
    {
        "A": {1: "a", 2: "b"},
        "B": {2: "c", 3: "d"},
        "C": {1: "c", 2: "d"},
    }
)

returned 1, which is not the result I wanted.

How do I fix it, please?

CodePudding user response:

So you want to ensure all of the dictionaries that are the values of dct have the same keys (ignoring the values)?

def all_key_sets_equal(dct: dict) -> bool:
    key_sets = [set(nd) for nd in dct.values()]
    return all(key_set == key_sets[0] for key_set in key_sets)
  • Related