繁体   English   中英

Python Lambda比较字典

[英]Python Lambda Comparing Dictionaries

我这里有一些代码可以比较使用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内置函数而不是lambdafilter那么这种事情将更容易实现。 要检查required_tags中的所有键是否存在于instance_tags中,并且它们不为空,请使用:

all_present = all(k in instance_tags and instance_tags[k] for k in required_tags.keys())

要检查instance_tags中的所有键和值是否都在required_tags中,请使用:

all_present2 = all(k in required_tags and v in required_tags for k, v in instance_tags.items())

假设使用Python3。

但是我不确定这是否是您想要的,因为您对第二个测试条件的描述在结尾处遗漏了一些单词:“检查(所有)所有键及其对应的值是否都是”。 是什么 另外,当您在评论中告诉我instance_tags的结构是什么时,您将拥有无与伦比的方括号。 您说这是一本字典,但它看起来像字典列表,每个字典都包含一项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM