匹配 munch.munch 对象列表的惯用方法?

Idiomatic way to to match against list of munch.munch objects?

我正在使用 openstack 阴影库来管理我们的 openstack 堆栈。一项任务是列出用户拥有的所有堆栈(例如,然后允许删除它们)。

阴影库调用 list_stacks() returns munch.Munch 对象的列表,基本上我想识别具有 'id' 或 'name' 匹配一些用户提供的输入。

我在这里想出了这个代码:

def __find_stack(self, connection, stack_info):
        stacks = connection.list_stacks()
        for stack in stacks:
            if stack_info in stack.values():
                return stack
        return None

但是感觉很笨拙,我想知道python中是否有更地道的方法来解决这个问题? (stack_info 是一个简单的字符串,可以是 "name" 或 "id",换句话说:它可能与 munched 堆栈对象的 "dict" 值中的这个或那个条目匹配)

正如我的评论所暗示的,我真的认为没有什么可以改进的。

但是,在性能方面,您可以使用 filter 将循环下推到 C 级别,如果有很多 stacks

这可能是有益的

就可读性而言,我认为您不会有太大收获。

def __find_stack(self, connection, stack_info):
    stacks = connection.list_stacks()
    return list(filter(lambda stack: stack_info in stack.values(), stacks))

然而这种方法不是"short-circuited"。您的原始代码在找到匹配项时会停止,而这个不会,因此从理论上讲,如果它们存在,您将获得多个匹配项(如果没有匹配项,则为空列表)。