搜索包含对象属性和打印/返回对象的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