對字典有串列理解。我的目標是如果key["formula"]
不存在則創建帶有一個鍵的字典,如果存在公式則創建帶有兩個鍵的字典。
目前有這樣的東西,它的作業原理
cols = [{"header":k, **(({"formula":v["formula"]}) if v.get("formula") else {})} for k,v in inp["cols"].items()]
有沒有更短/更優雅的方式來獲得同樣的效果?
編輯(預期輸出):為了澄清,我需要實作的是
inp = {"cols":{"header1":{"formula":"test"}}}
cols = [{"header":k, **(({"formula":v["formula"]}) if v.get("formula") else {})} for k,v in inp["cols"].items()]
->
[{'header': 'header1', 'formula': 'test'}]
inp = {"cols":{"header1":{"notformula":"test"}}}
cols = [{"header":k, **(({"formula":v["formula"]}) if v.get("formula") else {})} for k,v in inp["cols"].items()]
->
[{'header': 'header1'}]
uj5u.com熱心網友回復:
您可以使用 Python 3.9 中引入的 dict union 運算子稍微改進它。這里有額外的換行符以提高可讀性和 PEP 8 合規性。
cols = [
{"header": k} | ({"formula": v["formula"]} if "formula" in v else {})
for k, v in inp["cols"].items()
]
我也用支票代替了你v.get("formula")
的in
。v.get("formula")
例如,如果v
is是虛假的{"formula": []}
,您可能想要但可能不想要。
我會考慮將第二行的邏輯提取到一個函式中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505891.html
下一篇:匈牙利最大匹配中的除錯