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 个空字典,然后使用字典理解将给定字典的键值对添加到新字典之一中,但顺序相反,这意味着我们不会将键和值对添加到新字典中,而是将值和键对添加到此新字典中。
这样,通过使用字典的属性(它只能具有唯一的对),我们消除了具有相同值的对。在此之后,我们将对另一个空字典执行相同的操作,以反转第一个字典中的键值对,使其保持与原始字典中的顺序相同。
算法
创建两个新的空字典。
使用字典理解方法将原始字典中的键值对按值键对顺序复制到新字典之一。
对另一个新字典重复步骤 2。
打印第二个字典。
示例
在下面的代码中,我们将实现上述算法并打印包含所有唯一元素的字典。
marks = {'A' : 90, 'B' : 80, 'C' : 70, 'D' : 90, 'E' : 70} print(" 原始字典为 : " + str(marks)) temp = {val : key for key , val in marks.items()} ans = {val : key for key , val in temp.items()} print ("删除值后的字典 : " + str (ans) )
输出
上述代码的输出如下 -
原始字典为 : {'A' : 90, 'B' : 80, 'C' : 70, 'D' : 90, 'E' : 70} 删除值后的字典: { 'A' : 90, 'B' : 80, 'C' : 70 }
结论
在本文中我们了解了"python 中的字典是什么",以及我们可以在哪里使用字典。我们了解了两种不同的方法来删除字典中的重复值并打印它们。在第一种方法中,我们将值保存在列表中,并在给定的字典中进行迭代,当我们得到重复的值时,我们不会将键值对添加到新字典中,如果遇到的值是新的,我们会添加它。
在第二种方法中,我们将原始字典中的键值对反转到新字典中,以便删除所有重复的值,然后我们再次将这个新值键对反转到另一个字典中,最后打印它。
两种方法的时间复杂度都是 O (n)。