それ自体がリストであるmgmt_classesという属性を持つオブジェクトのリストがあります。
systems = [System, System, System,...]
System.mgmt_classes = ['foo','bar']
'foo'という名前のmgmt_classを持つシステムリスト内のSystemオブジェクトを識別したいと思います。私はそれを行うための2つの方法を思いついたが、どちらも好きではない。
醜いリスト内包
matching = [system for system in systems
if len([mc for mc in system.mgmt_classes
if re.search(search, mc)]) > 0]
醜いネストされたループ
matching = []
for system in systems:
for mgmt_class in system.mgmt_classes:
if re.search(search, mgmt_class):
matching.append(system)
どちらも好きではありません。これを行うためのよりエレガントな方法はありますか?私の腸は、醜いネストされたループは、従うのが簡単なので、2つのより良い解決策になるだろうと私に言っています。
編集:
mgmt_classesで部分的な用語を検索できるようにしたいので、たとえば「foo」は「food」または「football」を取得します。