Python程式移除字典中重複元素


在這篇文章中,我們將討論如何在 Python 中移除字典中的重複元素。字典是一種儲存 *鍵值對* 的資料結構,在學習 Python 時理解它是一個必不可少的資料型別。但是,在某些情況下,我們可能會遇到包含重複元素的字典,我們需要移除它們來清理資料。

我們可以透過以下方式宣告字典:

thisdict = { "brand": "Ford" , "model": "Mustang" , "year": 1964 }

然而,字典可以為不同的鍵包含重複的值,但我們可能希望字典中只存在唯一的值。

在這篇文章中,我們將探討兩種不同的方法來移除字典中的重複元素。

透過迭代字典

這是一種非常基本的方法來解決這個問題。首先,我們將建立一個新的字典來包含所有唯一的值,我們還會建立一個列表來儲存我們遇到的值,然後我們將簡單地迭代字典並檢查我們遇到的值是否已存在於我們建立的列表中,如果它已存在,我們不將該值新增到字典中,如果遇到的值不存在於我們的字典中,我們將新增它。

演算法

  • 建立一個新的空字典和一個新的列表。

  • 開始迭代給定的字典。

  • 檢查當前迭代的值是否存在於新建立的列表中。

  • 如果它不存在,我們將把該值新增到新字典中以及列表中,否則我們繼續下一個迭代。

  • 列印新建立的字典,其中將包含原始字典中的所有唯一元素。

示例

在下面的程式碼中,我們將實現上述演算法並列印包含所有唯一元素的字典。

emp_data = { '001':'Ramu', '002':'Radha', '003':'Ramu', '004':'Raghav'}
print("Contents of the dictionary: " + str(emp_data))
temp = []
resultant_dictionary = dict()
for key, val in emp_data.items():
   if val not in temp:
      temp.append(val)
      resultant_dictionary[key] = val
print ("After Removing Duplicates : " + str (resultant_dictionary))

輸出

上面程式碼的輸出如下:

Contents of the dictionary: {'001': 'Ramu', '002': 'Radha', '003': 'Ramu', '004': 'Raghav'}
After Removing Duplicates : {'001': 'Ramu', '002': 'Radha', '004': 'Raghav'}

使用字典推導式方法

在這種方法中,我們將使用 Python 的字典推導式方法。這種方法的基本思想是,我們建立兩個空字典,並使用字典推導式將給定字典的鍵值對新增到其中一個新字典中,但順序相反,這意味著我們不是將鍵值對新增到新字典中,而是將值鍵對新增到這個新字典中。

透過這種方式,利用字典只能擁有唯一鍵值對的特性,我們消除了具有相同值的鍵值對。之後,我們將對另一個空字典執行相同的操作,以反轉第一個字典中的鍵值對,使其保持與原始字典相同的順序。

演算法

  • 建立兩個新的空字典。

  • 使用字典推導式方法將原始字典的鍵值對複製到其中一個新字典中,以值鍵對的順序。

  • 對另一個新字典重複步驟 2。

  • 列印第二個字典。

示例

在下面的程式碼中,我們將實現上述演算法並列印包含所有唯一元素的字典。

marks = {'A' : 90, 'B' : 80, 'C' : 70, 'D' : 90, 'E' : 70}
print(" The original dictionary is : " + str(marks))
temp = {val : key for key , val in marks.items()}
ans = {val : key for key , val in temp.items()}
print ("The dictionary after values removal : " + str (ans) )

輸出

上面程式碼的輸出如下:

The original dictionary is : {'A' : 90, 'B' : 80, 'C' : 70, 'D' : 90, 'E' : 70}
The dictionary after values removal: { 'A' : 90, 'B' : 80, 'C' : 70 }

結論

在這篇文章中,我們瞭解了“Python 中的字典是什麼”,以及在哪裡可以使用字典。我們瞭解了兩種不同的方法來移除字典中的重複值並列印它們。在第一種方法中,我們將值儲存在一個列表中,並在迭代給定字典時,當我們得到一個重複的值時,我們不將鍵值對新增到新字典中,如果遇到的值是新的,我們就新增它。

在第二種方法中,我們將原始字典的鍵值對反轉到一個新字典中,以便刪除所有重複的值,然後我們再次將這個新的值鍵對反轉到另一個字典中,最後列印它。

兩種方法的時間複雜度都是 O(n)。

更新於: 2023年2月17日

4K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告