0

属性が検索にtitle一致する場合に検索するオブジェクトを取得しました

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ですか?

4

2 に答える 2

0

通常、最初にフィルターを作成して、条件に一致するアイテムを取得します。次に、それを繰り返して、あなたが望むことを何でもします:

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

ここでの利点は、フィルタリングを事前に ( なしでfilter) 実行し、フィルタリング テストを 1 回だけ実行することです。

于 2013-10-04T03:24:24.770 に答える
0

リスト内の各項目ではなく、リストの文字列表現を出力しています。

できるよ:

print map(str, filter(lambda x: search in str(x.title),something))
于 2013-10-04T03:24:43.237 に答える