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+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.