2012-06-20 80 views
5

比方說,我有一個列表的字典。我將「duplicateates」定義爲列表中任何兩個具有相同字段「id」值的字典(即使其他字段不同)。我如何刪除這些重複項。如何從python中的重複字段列表中刪除字典?

一個例子名單會是這樣的:

[{'name': 'John' , 'id':1}, {'name': 'Mike' , 'id':5},{'name': 'Dan' , 'id':5}] 

在這種情況下,「邁克」和「丹」是重複的,並且需要刪除其中之一。哪一個並不重要。

+1

這是一個問題,從重複昨天http://stackoverflow.com/questions/11092511/python-list-of-unique-dictionaries –

+0

這是一個有點不同,因爲用戶想要刪除該類型的字典是完全相同的,而我想刪除單個字段中相同的字典,即使所有其他字段都不相同。 – philpee2

+0

不,OP在評論中澄清說,這正是他們想要做的。解決方案是相同的。即使字段名稱也是一樣的 –

回答

11

將它們轉儲到另一個字典中,然後將它們拉出。

dict((x['id'], x) for x in L).values() 
2

以下函數的列表理解應該可以解決您的問題。

def f(seq): 
    s = set() 
    return [x for x in seq if x['id'] not in s and not s.add(x['id'])] 
相關問題