Python 如何在字典中查找重复值

Python 如何在字典中查找重复值,python,python-3.x,dictionary,duplicates,Python,Python 3.x,Dictionary,Duplicates,如何从字典中查找并删除重复值及其键 例如: f = {1:4, 1:3, 4:4, 9:4, 5:7} 输出: f = f = {1:3, 5:7} 正如您所看到的,所有具有重复值4的键都已删除 还有一种方法可以跟踪删除了多少项。。。在上述情况下,删除了3项。要跟踪删除了多少项,您可以创建一个变量=0,然后在每次删除某项时将该变量+=1 或 您可以在执行此操作之前测量len(f),然后在运行代码后测量len(f),然后查看两者之间的差异,并获得已删除的项目数计算值: import colle

如何从字典中查找并删除重复值及其键

例如:

f = {1:4, 1:3, 4:4, 9:4, 5:7}
输出:

f = f = {1:3, 5:7}
正如您所看到的,所有具有重复值4的键都已删除


还有一种方法可以跟踪删除了多少项。。。在上述情况下,删除了3项。

要跟踪删除了多少项,您可以创建一个变量=0,然后在每次删除某项时将该变量+=1

您可以在执行此操作之前测量len(f),然后在运行代码后测量len(f),然后查看两者之间的差异,并获得已删除的项目数

计算值:

import collections
value_occurrences = collections.Counter(f.values())
然后过滤掉多次出现的内容:

filtered_dict = {key: value for key, value in f.items()
                 if value_occurences[value] == 1}
要知道删除了多少,只需从旧的dict中减去新的dict的大小。

试试这个

list1=[]
f = {1:4, 1:3, 4:4, 9:4, 5:7}
for value in f.values():
        if value not in list1:
                list1.append(value)
for key in f.keys():
        if key in list1:
                del f[key]
return f
输出将是

{1: 3, 5: 7, 9: 4}

我不知道从哪里开始。。。我找了很多。。但是,我得到的所有答案都与我试图实现的目标不符。只需遍历
f.values()
,然后对每个值再次遍历,查看是否有重复项,然后删除它们。虽然这会有点低效(
O(n^2)
),但不清楚生成的词典是否包含
1:3
,因为
1:4
1:3
共享同一个键,因此其中一个将不存在,并且根据输入顺序,它可能是
1:3
@SethMMorton。。。我在寻找重复的“值”…我明白,我只是说字典中不可能同时有
1:4
1:3
,因此
1:4
1:3
中的一个将丢失。如果python因为重复的键而删除了条目,则不能有重复的值。啊,是的,这是一种有趣且简单的方法,可以计算出删除了多少项。。。谢谢你的帮助@user3029969:
首先导入集合
。只是为了理解。。。键:键的值,f中的值。项()。。。这条线是什么do@user3029969当前位置这是一个听写理解。对于原始dict中的每个键值对,如果在我们计算它们时发现该值出现一次,则该键值对将包含在新dict中。