gpt4 book ai didi

python - 如何循环遍历此 Python 字典并搜索是否存在值

转载 作者:行者123 更新时间:2023-11-28 20:36:25 25 4
gpt4 key购买 nike

我有一个像这样的 Python 字典:

{
'TagList': [
{
'Key': 'tag1',
'Value': 'val'
},
{
'Key': 'tag2',
'Value': 'val'
},
{
'Key': 'tag3',
'Value': 'val'
},
...
]
}

如果 Key tag1 可用,我如何循环遍历此字典以搜索。

编辑:@Willem Van Onsem 的解决方案效果很好。但是我忘了说我需要检查不止 1 个 Key,例如:

If Tag1 and Tag2 exist => true
If either Tag1 or Tag2 is missing` => false

最佳答案

假设您的字典包含一个键 'TagList' 并且您只对与该键关联的列表中的字典感兴趣,您可以使用:

any(subd.get('Key') == 'tag1' for subd in the_dict['TagList'])

其中字典 the_dict 是您要检查的字典。

因此,我们将 any(..) 内置函数与生成器表达式一起使用,该表达式遍历与 'TagList' 键关联的列表。对于每个这样的子词典,我们检查键 'Key' 是否与值 'tag1' 相关联。如果一个或多个子词典中没有键 'Key',这不是问题,因为我们使用 .get(..)

对于给定的字典,这会生成:

>>> any(subd.get('Key') == 'tag1' for subd in the_dict['TagList'])
True

多个值

如果您想检查列表的所有值是否出现在子字典中,我们可以使用以下两行代码(假设“标签名称”是可散列的,字符串是可散列的):

tag_names = {subd.get('Key') for subd in the_dict['TagList']}
all(tag in tag_names for tag in ('tag1','tag2'))

这里 all(..) 将返回 True 如果 all 右边元组中的标签名称 (( 'tag1','tag2')) 分别在至少一个子词典中。

例如:

>>> all(tag in tag_names for tag in ('tag1','tag2'))
True
>>> all(tag in tag_names for tag in ('tag1','tag2','tag3'))
True
>>> all(tag in tag_names for tag in ('tag1','tag2','tag4'))
False

关于python - 如何循环遍历此 Python 字典并搜索是否存在值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45108894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com