2013-12-09 35 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}