Flatten nested dictionaries into dotted keys

Python
from collections.abc import Iterator, Mapping


def flatten(data: Mapping, prefix: str = "") -> Iterator[tuple[str, object]]:
    """Yield (dotted.key, value) pairs for a nested mapping."""
    for key, value in data.items():
        path = f"{prefix}{key}"
        if isinstance(value, Mapping):
            yield from flatten(value, prefix=f"{path}.")
        elif isinstance(value, list):
            for index, item in enumerate(value):
                yield f"{path}[{index}]", item
        else:
            yield path, value


if __name__ == "__main__":
    payload = {"user": {"name": "Ada", "roles": ["admin", "dev"]}, "active": True}
    print(dict(flatten(payload)))