我在Python中有一个对象列表.然后我有另一个对象列表.我想浏览第一个列表,看看是否有任何项目出现在第二个列表中.
我以为我可以做到
for item1 in list1:
for item2 in list2:
if item1 == item2:
print "item %s in both lists"
Run Code Online (Sandbox Code Playgroud)
然而,这似乎不起作用.虽然我这样做:
if item1.title == item2.title:
Run Code Online (Sandbox Code Playgroud)
它工作正常.我有比这更多的属性,所以不要真的想做一个大的if语句比较所有的属性,如果我不需要.
任何人都可以给我帮助或建议我能做些什么来找到两个列表中出现的对象.
谢谢
Tam*_*más 31
假设您的对象只有一个title与相等性相关的属性,您必须__eq__按如下方式实现该方法:
class YourObject:
[...]
def __eq__(self, other):
return self.title == other.title
Run Code Online (Sandbox Code Playgroud)
当然,如果您有更多与平等相关的属性,那么您也必须包含这些属性.您也可以考虑实施__ne__并__cmp__保持一致的行为.
集合交叉将为此做.
>>> x=[1,2,3,4]
>>> y=[3,4,5,6]
>>> for i in set(x) & set(y):
... print "item %d in both lists" %i
...
item 3 in both lists
item 4 in both lists
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44712 次 |
| 最近记录: |