Python Lambda比较字典

2024-09-30 16:19:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我需要能够处理两种情况。第一个条件是只检查Required Tags中的所有key是否存在于Instance Tags中,并且它们不是空的。在

requiredTags = {'Name' : ['WebSense','NAT-V2'] }
instanceTags = i['Instances'][0]['Tags']
requiredTagsPresent = filter(lambda x: x['Key'] in requiredTags and 
x['Value'] is not '', instanceTags)

下一个条件是最常见的-检查是否有所有的键及其对应的值

^{pr2}$

到目前为止,我还没有能够在一个脚本中完成以上两个任务。 最后一个条件就是我遇到麻烦了。我想要一个特定的标记值,如果存在,我们只检查是否存在对应的键,而不管值是什么。我不知道怎么做那样的事。在

有什么提示吗?在


Tags: 实例instancelambdakey代码标记字典tags
1条回答
网友
1楼 · 发布于 2024-09-30 16:19:33

如果使用内置函数all,而不是lambda和{},那么这类事情就容易多了。要检查所需的\u标记中的所有键是否都存在于实例\u标记中并且它们不是空的,请使用:

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

要检查instance\u标记中的所有键和值是否都在必需的\u标记中,请使用:

^{pr2}$

假设是Python3。在

但我不确定这是否是您想要的,因为您对第二个测试条件的描述在结尾处留下了几个字:“检查所有键及其对应的值是否都在那里”。是什么?另外,当你在评论中告诉我实例标记的结构是什么时,你的方括号是不匹配的。你说这是一本字典,但它看起来像是一个字典列表,每一个都包含一个条目。在

相关问题 更多 >