Mam takiego śmiesznego case.
Jest sobie list comprehension, które tworzy dzienniki w zależności, czy konkretny klucz w źródle istnieje. Jeśli istnieje, to dziennik ma mieć dwa klucze, jeśli nie to jeden.
input to +/- cos takiego ->
{"cols":{"header1":{"formula":"test", "dupa":"test",...}}}
Pierwsze podejście:
from typing import Callable
dict_creator: Callable[[str, dict], dict] = lambda key, value: {"header": key} | ({"formula": value["formula"]} if "formula" in value else {})
cols = [
dict_creator(k,v)
for k, v in inp["cols"].items()
]
print(cols)
Jako, że klucz formula istnieje to output powinien wyglądać tak - [{'header': 'header1', 'formula': 'test'}]
. Gdy by nie istniał to -> [{'header': 'header1'}]
Drugie podejście:
cols = [
{"header": k} | ({"formula": v["formula"]} if "formula" in v else {})
for k, v in inp["cols"].items()
]
print(cols)
Może ktoś ma jeszcze inny sposób :D