2015-10-26 84 views
1

如何將對象列表與標準ID列表進行比較,然後從原始列表中刪除所有重複項?比較並刪除具有標準列表的對象列表

這裏是我的問題:

我有在Python兩個列表。

答:

[<id_definitions.Wrapper object at 0x110490ba8>, <id_definitions.Wrapper object at 0x110490c18>, <id_definitions.Wrapper object at 0x110490be0>] 

B:

[1, 2] 

A是對象的列表中,每個對象具有稱爲ID的屬性。列表B只是一個ID列表(不是對象)。

我想從A中刪除出現在列表B中的任何ID。

這是我曾嘗試:

new_list = [x for x in A if x.ID not in B] 

我的問題是,沒有重複被刪除,爲什麼?

+2

「ID」屬性是整數值還是字符串值? –

+0

這是遠遠不夠的信息來幫助你,因爲它。你是否可以爲'Wrapper'實現一個體面的'__repr__'(即至少在eval(repr(instance))== instance')? – jonrsharpe

+0

@JohnGordon O我的你是正確的加int(x.ID)修復問題! – MrKnotts

回答

1

您的列表理解是正確的。

恐怕是你的x.ID有問題。嘗試到print [x.ID for x in A],你應該能夠找到問題。