搜索包含对象属性和打印/返回对象的Python

我有一个对象列表中,我在寻找,如果我的搜索属性title比赛搜索包含对象属性和打印/返回对象的Python

class Something(object): 

def __init__(self,title):

self.title = title

def __str__(self):

return "%s is the title " % self.title

我怎样才能打印物体时,它的调用?这是我如何寻找它。

search = " ".join(s[1:]).lower() 

if any(search in str(a.title).lower() for a in something):

print filter(lambda x: search in str(x.title),something)


If any(...)将检查搜索的任何部分和我对象的标题相匹配,如果发现任何会返回true。


filter(...)打印对象,但这里是我遇到的问题它打印:


[<__main__.Something object at 0x0000000002C93B38>, <__main__.Something object at 0x0000000002D33828>]


我知道,这是一个对象,为什么不通过__str__(self)方法打印?如何从我的对象中唤起打印功能Something

回答:

通常,我会先创建一个过滤器,以获取符合条件的项目。然后我会遍历说,做任何你想做的事情:

generator = (x for x in something if search in str(x.title).lower()) 

for item in generator:

print item

这里的好处是,你做的过滤的时间提前(不filter),你只能做筛选测试一次。

回答:

您正在打印列表的字符串表示形式,而不是列表中的每个项目。

你可以这样做:

print map(str, filter(lambda x: search in str(x.title),something)) 

以上是 搜索包含对象属性和打印/返回对象的Python 的全部内容, 来源链接: utcz.com/qa/261323.html

回到顶部