我有一個嵌套的字典,它看起來像這樣:
dct = {"A": {"AA": "aa", "BB": {"BBB": "bbb", "CCC": "ccc"}}}
我想提取串列格式中的所有鍵序列,直到達到最深的鍵:值對。
預期的輸出是這樣的:
["A->AA", "A->BB->BBB", "A->BB->CCC"]
我嘗試的解決方案是:
for k, v in dct.items():
if isinstance(v, dict):
# traverse nested dict
for x in find_keys(v):
yield "{}_{}".format(k, x)
print("{}_{}".format(k, x))
else:
yield k
print(k)
但它似乎沒有按預期作業。
uj5u.com熱心網友回復:
我想你快到了(或錯誤地省略了一些部分):
def find_keys(dct):
for k, v in dct.items():
if isinstance(v, dict):
yield from (f"{k}->{x}" for x in find_keys(v))
else:
yield k
dct = {"A": {"AA": "aa", "BB": {"BBB": "bbb", "CCC": "ccc"}}}
print(*find_keys(dct)) # A->AA A->BB->BBB A->BB->CCC
如果你想return改用,那么:
def find_keys(dct):
result = []
for k, v in dct.items():
if isinstance(v, dict):
result = [f"{k}->{x}" for x in find_keys(v)]
else:
result.append(k)
return result
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/375706.html
