如何在Python中刪除三層嵌套字典中最內(nèi)層值完全相同的鍵?

如何在Python中刪除三層嵌套字典中最內(nèi)層值完全相同的鍵?

python三層嵌套字典鍵值刪除:高效解決方案

本文探討如何處理Python中三層嵌套字典的鍵值刪除問題。 目標(biāo)是刪除最外層字典中,其對應(yīng)的最內(nèi)層字典值完全相同的鍵。

問題描述

給定一個三層嵌套字典,例如:

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}}}

需要刪除最內(nèi)層字典值完全相同的鍵(例如’l1’),得到:

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

優(yōu)化后的解決方案

直接使用all()函數(shù)檢查字典值是否相同效率較低,特別是對于大型字典。 以下代碼提供一個更優(yōu)化的解決方案,利用json.dumps()將字典轉(zhuǎn)換為可哈希的字符串進(jìn)行比較:

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

import json  def remove_replicated(o_d):     d_c = o_d.copy()  # 創(chuàng)建副本避免修改原字典     keys_to_remove = set()      for k, v in d_c.items():         inner_values = [json.dumps(inner_v) for inner_v in v.values()]  # 轉(zhuǎn)換為可哈希字符串         if len(set(inner_values)) == 1:  # 使用集合判斷唯一性,效率更高             keys_to_remove.add(k)      for k in keys_to_remove:         del o_d[k]  # 使用示例 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_replicated(dict1) print(dict1)

此方法首先將最內(nèi)層字典的值轉(zhuǎn)換為可哈希的JSON字符串,然后使用集合set()高效地檢查唯一性。 這避免了重復(fù)的比較,顯著提高了效率,尤其是在處理大型嵌套字典時。 使用集合判斷唯一性比all()效率更高。 此外,代碼也更簡潔易懂。

此優(yōu)化后的函數(shù)remove_replicated在處理大量數(shù)據(jù)時性能會更好,并且代碼更清晰、更易于維護(hù)。

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