2013-12-09 38 views
0

我们如何从字典中找到并删除重复值及其键值。如何在字典中查找重复值

例子:

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

输出:

f = f = {1:3, 5:7} 

正如你可以看到所有的按键与他们重复的值4已被删除...

也就是有办法跟踪有多少物品已被删除......在上述情况下,3件物品已被删除。

+0

我不知道从哪里开始... ...我已经寻找很多..但我得到的答案不要我无法连接我想要实现的目标。 – user3029969

+0

只需遍历'f.values()'并对每个值再次迭代以查看是否有重复项,然后删除它们。虽然这可能是低效的('O(n^2)') – hkk

+1

由于1:4和1:3共享相同的结果字典,所以它不会有'1:3'关键所以它们中的一个将不存在,并且根据输入顺序它可能是'1:3'。 – SethMMorton

回答

1

跟踪有多少项目已被删除,你可以只创建一个变量= 0,然后+ =每次,它消除了一些时间变量由1

你可以只测量len(f),然后在运行代码后测量len(f),看看两者之间有什么区别,并且已知有多少物品已被删除

+0

啊是的,这是一个有趣和简单的方法来计算出有多少物品已被删除...感谢你的帮助! – user3029969

4

计算值:

import collections 
value_occurrences = collections.Counter(f.values()) 

然后筛选出多次出现的那些:

filtered_dict = {key: value for key, value in f.items() 
       if value_occurences[value] == 1} 

要了解有多少被拆除,刚刚从旧减去新字典的大小。

+0

它给出了一个错误,没有定义集合 – user3029969

+0

@ user3029969:首先导入集合。 – user2357112

+0

只是为了理解...关键:键值,f.items值()...这条线做什么 – user3029969

1

试试这个

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}