Python 从字典中删除重复元素

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)。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程