我正在使用openstack shade库来管理我们的openstack堆栈。一个任务是列出用户拥有的所有堆栈(例如,允许删除它们)。你知道吗
shade库调用list_stacks()
返回一个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
但这感觉很笨拙,我想知道是否有一种更惯用的方法来解决这个问题?(stack_info
是一个简单的字符串,“name”或“id”,换句话说:它可能与munched stack对象的“dict”值中的这个或那个条目相匹配)
正如我的评论所说,我并不认为有什么需要改进的。你知道吗
但是,在性能方面,您可以使用
filter
将循环下推到C级别,如果有很多stacks
,这可能是有益的。你知道吗可读性方面,我不认为你会获得太多。你知道吗
然而,这种方法并非“短路”。您的原始代码在找到匹配项时停止,而此代码不会停止,因此理论上,如果存在多个匹配项,您将得到多个匹配项(如果没有匹配项,则会得到一个空列表)。你知道吗
相关问题 更多 >
编程相关推荐