python - 是否可以在 python 的列表理解中使用多个条件?
问题描述
试图在 AWS EC2 上获取带有实例标签“名称”的实例列表,其中包含特定值。
这个片段是功能性的,但认为我们可以让它更干净:
# -*- coding: utf-8 -*-
import sys
import boto3
class proxies_on_ec2():
def __init__(self, **kwargs):
self.ec2client = boto3.resource('ec2')
def get_list(self):
self.get_all_instances = self.ec2client.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
self.instances_list = []
for instance in self.get_all_instances:
for tag in instance.tags:
if tag.get('Key') == 'Name':
if "[Dev]" in tag['Value']:
self.instances_list.append({'Name': tag['Value'], 'id': instance.id, 'ip': instance.public_ip_address})
return self.instances_list
我无法通过列表理解得到类似的结果:
self.instances_list = [{'Name':instance.tags[0].get('Value'), 'id':instance.id, 'ip':instance.public_ip_address} for instance in self.get_all_instances]
问题是 instance.tags[0]。是否可以在此条件后添加 'if tag.get('Key') == 'Name' 并将 instance.tags[0] 替换为 instance.tag ?
感谢帮助
解决方案
self.instances_list = [
{"Name": tag["Value"], "id": instance.id, "ip": instance.public_ip_address}
for instance in self.get_all_instances
for tag in instance.tags
if tag.get("Key") == "Name" and "[Dev]" in tag["Value"]
]
推荐阅读
- c# - .NET 核心在 VS 代码中引发多个错误
- react-native - 引用错误:在 Jest 环境被拆除后,`import` 一个文件
- django - 在同一 post_detail 页面中实现对帖子的编辑/删除评论
- vba - 使用 VBA 在 Access 中自动创建表关系
- c++ - 在没有初始值的堆中声明数组(彼此后面的变量)
- r - 在 R 中创建中断规则
- sql - 如何在组合框中包含“全选”选项?
- javascript - 使用javascript一次选择所有文本框
- python - 有没有创建数组块的相反方法?
- c# - 如何在检查器和资源管理器窗口中设置 Outlook 右侧窗格的最小宽度