Python程序 从字典中删除重复元素
在这篇文章中,我们将讨论如何在 Python 中从一个字典中删除重复的元素。dictionary 是一个存储键值对的数据结构,它是学习 Python 时需要了解的一个基本数据类型。然而,可能会有这样的情况:我们有一个带有重复元素的 dictionary,我们想删除它们来清理数据。
我们可以用以下方式声明一个 dictionary —
thisdict = { "brand": "Ford" , "model": "Mustang" , "year": 1964 }
然而,一个 dictionary 可以包含不同键的重复值,但我们可能希望在我们的 dictionary 中只存在唯一的值。
在这篇文章中,我们将研究从 dictionary 中删除重复元素的两种不同方法 。
通过遍历字典
这是解决这个问题的一个非常基本的方法。首先,我们将创建一个新的 dictionary 来包含其中所有的唯一值,我们还将创建一个列表来保存我们遇到的值,然后我们将简单地遍历 dictionary 并检查我们遇到的值是否已经存在于我们创建的列表中,如果它已经存在,我们就不把这个值添加到这个 dictionary 中,如果遇到的值不存在于我们的 dictionary 中,我们就添加它。
算法
- 创建一个新的空字典和一个新的列表。
-
开始在给定的 dictionary 上进行迭代。
-
检查当前迭代的值是否存在于新创建的列表中。
-
如果不存在,我们将把这个值添加到新的字典和列表中,否则就进入下一个迭代。
-
打印新创建的 dictionary,它将包含原始 dictionary 中的所有独特元素。
例子
在下面的代码中,我们将实现上述算法并打印包含所有独特元素的 dictionary。
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个字典。
例子
在下面的代码中,我们将实现上述算法,并打印带有所有独特元素的 dictionary。
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中的字典”,我们可以在哪里使用字典。我们了解了2种不同的方法来删除字典中的重复值并打印它们。在第一种方法中,我们将值保存在一个列表中,在迭代给定的字典时,当我们得到一个重复的值时,我们不将键值对添加到一个新的字典中,如果遇到的值是新的,我们就添加它。
在第二种方法中,我们将键值对从原来的字典中反转到一个新的字典中,这样所有重复的值都会被删除,然后我们再次将这个新的值键值对反转到另一个字典中,最后再打印出来。
这两种方法的时间复杂度都是O(n)。