如何在Python中刪除三層嵌套字典中最里層值為相同字典的鍵?

如何在Python中刪除三層嵌套字典中最里層值為相同字典的鍵?

python編程中,處理嵌套字典是常見(jiàn)操作。本文探討如何從三層嵌套字典中刪除最內(nèi)層字典值完全相同的鍵。

問(wèn)題描述: 給定一個(gè)三層嵌套字典,其最內(nèi)層字典可能具有相同的值。目標(biāo)是刪除所有最內(nèi)層字典值完全相同的鍵。

示例:

輸入字典:

立即學(xué)習(xí)Python免費(fèi)學(xué)習(xí)筆記(深入)”;

dict1 = {'l1':{'pop1':{'a':1}, 'pop2':{'a':1}, 'pop3':{'a':1}},          'l2':{'pop1':{'b':1}, 'pop2':{'b':1}, 'pop3':{'b':2}},          'l3':{'pop1':{'c':1}, 'pop2':{'c':2}, 'pop3':{'c':3}}}

預(yù)期輸出字典:

dict2 = {'l2':{'pop1':{'b':1}, 'pop2':{'b':1}, 'pop3':{'b':2}},          'l3':{'pop1':{'c':1}, 'pop2':{'c':2}, 'pop3':{'c':3}}}

在dict1中,’l1’鍵對(duì)應(yīng)的最內(nèi)層字典值都為{‘a’:1},因此需要?jiǎng)h除’l1’。

挑戰(zhàn): 直接使用集合判斷字典值是否相同會(huì)報(bào)錯(cuò),因?yàn)樽值涫遣豢晒5摹?/p>

解決方案: 通過(guò)遍歷字典并逐個(gè)比較最內(nèi)層字典值來(lái)解決。

代碼:

def remove_identical_inner_dicts(input_dict):     """     刪除三層嵌套字典中內(nèi)層字典值完全相同的鍵。      Args:         input_dict: 輸入的三層嵌套字典。     """     # 創(chuàng)建一個(gè)副本,避免修改原始字典     working_dict = input_dict.copy()       for key, value in working_dict.items():         inner_dicts = list(value.values())  # 獲取所有內(nèi)層字典         if all(inner_dicts[0] == inner_dict for inner_dict in inner_dicts): # 判斷所有內(nèi)層字典是否相同             del input_dict[key]  # 刪除原始字典中的鍵  # 測(cè)試代碼 dict1 = {'l1':{'pop1':{'a':1}, 'pop2':{'a':1}, 'pop3':{'a':1}},          'l2':{'pop1':{'b':1}, 'pop2':{'b':1}, 'pop3':{'b':2}},          'l3':{'pop1':{'c':1}, 'pop2':{'c':2}, 'pop3':{'c':3}}}  remove_identical_inner_dicts(dict1) print(dict1)  # 輸出dict2

此函數(shù)首先復(fù)制輸入字典,然后迭代每一項(xiàng)。它提取所有內(nèi)層字典并使用all()函數(shù)檢查它們是否完全相同。如果是,則從原始字典中刪除相應(yīng)的鍵。 這避免了修改字典的同時(shí)迭代的錯(cuò)誤。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享