我有一个对象列表,其属性名为 mgmt_classes,它本身就是一个列表。
systems = [System, System, System,...]
System.mgmt_classes = ['foo','bar']
我想识别系统列表中具有名为“foo”的 mgmt_class 的系统对象。我想出了两种方法来做到这一点,但我不喜欢任何一种。
丑陋的列表理解
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)
我不喜欢其中任何一个。有没有更优雅的方式来做到这一点?我的直觉告诉我,丑陋的嵌套循环将是两者中更好的解决方案,因为它更容易理解。
编辑:
我希望能够在 mgmt_classes 中搜索部分术语,例如,'foo' 会让我得到 'food' 或 'football'。