Seite 2 von 2

Re: Brotli

Verfasst: Mittwoch 15. Juli 2020, 00:13
von __blackjack__
Für solche tiefen Zugriff auf verschachtelte Strukturen verwende ich ja auch ganz gerne das externe `glom`-Package:

Code: Alles auswählen

#!/usr/bin/env python3
from glom import glom, Iter


clients = [
    {
        "id": "d6317eca-bb8d-47a2-871a-80eea6ca39b3",
        "data": {
            "name": "Fox Richardson",
            "contact": {
                "digital": {"email": "foxrichardson@aquasure.com"},
                "real": {"city": "Ezel", "street": "Locust Avenue"},
            },
        },
    },
    {
        "id": "2bb7d904-3b76-4cc2-97b6-f2670697482c",
        "data": {
            "name": "Gabrielle Fields",
            "contact": {
                "digital": {"email": "gabriellefields@aquasure.com"},
                "real": {"city": "Barstow", "street": "Veterans Avenue"},
            },
        },
    },
    {
        "id": "7bef15ff-adfe-4371-af0d-79438a42728b",
        "data": {
            "name": "Hess Sweeney",
            "contact": {
                "digital": {"email": "hesssweeney@aquasure.com"},
                "real": {"city": "Loretto", "street": "Gem Street"},
            },
        },
    },
]


def main():
    template = (
        "Mein Name ist {name}"
        " und ich bin unter der E-Mail {email} erreichbar"
        " und wohne in {city}."
    )
    mapping = {
        "name": "data.name",
        "email": "data.contact.digital.email",
        "city": "data.contact.real.city",
    }
    for line in glom(clients, Iter(mapping).map(template.format_map)):
        print(line)


if __name__ == "__main__":
    main()