我需要執行如下運算式
{(i, j, k): config[i][j][k]
for i in config["content"].keys()
for j in config["content"][i].keys()
for k in config["content"][i][j].keys()}
該運算式基于配置的深度。因為這有 3 個級別,所以我們得到[i],[j],[k]。如果我們有 4 個級別,那就是[i],[j],[k],[l]. 等等等等。
我希望動態生成結果運算式和字典。假設我們知道深度和值,[i],[j],[k]但我如何動態地創建 for 回圈。將不勝感激任何幫助。很高興以不同的方式做到這一點,只要它能給我最終的命令
uj5u.com熱心網友回復:
您可以使用遞回地展平子字典并將子字典的鍵路徑與當前級別的鍵合并的函式:
def flatten(config):
output = {}
if isinstance(config, dict):
for key, value in config.items():
for path, leaf in flatten(value).items():
output[(key, *path)] = leaf
else:
output[()] = config
return output
演示:https ://replit.com/@blhsing/MustyStripedQuery
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/534512.html
