遞歸存取巢狀字典值
使用巢狀字典時,通常需要迭代所有鍵值對以擷取特定資料。當嘗試循環遍歷字典並檢索所有非嵌套字典值,同時遞歸存取巢狀字典值時,就會出現此問題。
由於迭代的範圍有限,第一次嘗試使用迭代僅適用於前兩個層級內循環。由於其靜態實現,第二次嘗試也無法完全遍歷字典。
要克服此限制,需要遞歸。透過定義一個函數來列印字典值,您可以在任何巢狀字典上遞歸呼叫該函數來存取它們的值。
以下是遞歸解決方案的範例:
def myprint(d): for k, v in d.items(): if isinstance(v, dict): myprint(v) # Recurs if value is a dictionary else: print("{0} : {1}".format(k, v))
此解首先迭代輸入字典的鍵值對。對於每個鍵值對,它檢查該值是否為字典。如果是,則以巢狀字典作為參數遞歸呼叫 myprint 函數。如果值不是字典,它只是列印鍵值對。
透過利用遞歸,該解決方案可以遍歷任意數量的巢狀字典層級來存取和列印所有非巢狀字典值。
以上是如何從嵌套字典中遞歸存取和列印值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!