def flatten(d: dict, leaf_type=str): out = {} for key, value in d.items(): if isinstance(value, leaf_type): out[key] = value elif isinstance(value, dict): out = {**out, **flatten(value)} else: raise ValueError("Unexpected value type: {type(value)}")