Python Lambda比较字典

Python Lambda比较字典,python,dictionary,amazon-ec2,lambda,Python,Dictionary,Amazon Ec2,Lambda,我这里有一些代码来比较使用Lambda和filter的两个字典。基本上,我为每个EC2实例都有一个必需的标记字典和一个标记字典 我需要能够处理两个条件。第一个条件是只检查实例标记中是否存在所需标记中的所有键,并且它们不是空的 requiredTags = {'Name' : ['WebSense','NAT-V2'] } instanceTags = i['Instances'][0]['Tags'] requiredTagsPresent = filter(lambda x: x['Key']

我这里有一些代码来比较使用Lambda和filter的两个字典。基本上,我为每个EC2实例都有一个必需的标记字典和一个标记字典

我需要能够处理两个条件。第一个条件是只检查实例标记中是否存在所需标记中的所有键,并且它们不是空的

requiredTags = {'Name' : ['WebSense','NAT-V2'] }
instanceTags = i['Instances'][0]['Tags']
requiredTagsPresent = filter(lambda x: x['Key'] in requiredTags and 
x['Value'] is not '', instanceTags)
下一个条件是最常见的-检查是否存在所有键及其对应的值

requiredTagsPresent = filter(lambda x: x['Key'] in requiredTags and x['Value'] in requiredTags, instanceTags)
到目前为止,我还不能在一个脚本中同时完成上述两项。 最后一个条件就是我遇到的问题。我希望有一个特定的标记值,如果存在,我们只检查是否存在相应的键,而不考虑该值。我不知道怎么做那样的事


有什么建议吗

如果您使用内置函数
all
,而不是
lambda
过滤器,这种事情就容易多了。要检查所需_标记中的所有键是否都存在于实例_标记中,并且它们不是空的,请使用:

all_present = all(k in instance_tags and instance_tags[k] for k in required_tags.keys())
要检查instance_标记中的所有键和值是否都在required_标记中,请使用:

all_present2 = all(k in required_tags and v in required_tags for k, v in instance_tags.items())
这假设Python3


但我不确定这是否是您想要的,因为您对第二个测试条件的描述在结尾处留下了一句话:“检查[sic]所有键及其对应值是否正确”。你是什么?另外,当您在评论中告诉我instance_标记的结构是什么时,您使用了无与伦比的方括号。您说这是一本词典,但它看起来像一个词典列表,每个词典包含一项。

这不清楚。如果不能在一个脚本中同时完成这两个任务,那么可以在单独的脚本中完成每个任务吗?你能告诉我们你是怎么做到的吗?
instance\u标签的类型是什么?它看起来像什么?instance\u标签是另一个字典。看起来像这样。[{'Key':'Name'},{'Value':'j'}-所以标记是Name=j