Hier mal Code zum sinnvollen umstrukturieren der Eingabedaten.
Code: Alles auswählen
data = {
"properties": {
"password": {"key": "password", "value": "SomePWD"},
"enablePassword": {"key": "enablePassword", "value": ""},
"username": {"key": "username", "value": "SomeUsername"},
}
}
# Ziel:
# {"password": "SomePWD", "enablePassword": "", "username": "SomeUsername"}
Mit Syntax:
Code: Alles auswählen
restructured = {
property_["key"]: property_["value"]
for property_ in data["properties"].values()
}
Mit `operator.itemgetter()`:
Code: Alles auswählen
from operator import itemgetter
restructured = dict(
map(itemgetter("key", "value"), data["properties"].values())
)
Mit Kanonen auf Spatzen, äh, mit `glom()`:
Code: Alles auswählen
from glom import glom, Merge, Spec
restructured = glom(data, ("properties.*", [{Spec("key"): "value"}], Merge()))
Wobei man damit auch schön per ”Pfad” auf die beiden Werte im Originalzustand zugreifen kann:
Code: Alles auswählen
ssh_username = glom(data, "properties.username.value")
ssh_password = glom(data, "properties.password.value")
Oder man benutzt ``match``/``case``:
Code: Alles auswählen
match data:
case {
"properties": {
"username": {"value": str() as ssh_username},
"password": {"value": str() as ssh_password},
}
}:
do_something_with(ssh_username, ssh_password)
case _:
raise ValueError("...")