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)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END