如果键的值之一在字符串中,则返回字典键

2024-10-01 07:35:19 发布

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

所以我有一个字典,里面有各种键,这些键的值在各种大小的列表中:

dict = {'a' : ['one', 'two'],
        'b' : ['three', 'four', 'five'],
        'c' : ['six']}

如果我有一个字符串如下:

stringa = 'blahfourblah'

我想返回'b',因为在stringa中找到了键'b'(即'four')的一个值

我尝试了以下代码:

[k for k, v in dict.items() if stringa in v]

但这只会返回以下结果:

[]

任何帮助都将不胜感激


Tags: 字符串代码in列表for字典onedict
1条回答
网友
1楼 · 发布于 2024-10-01 07:35:19

条件stringa in v不正确,因为它将检查整个stringa是否是列表中的元素。元素'blahfourblah'不在列表['three', 'four', 'five']中。所以这是行不通的

可以将构造与any(..)一起使用:

[k for k, vs in d.items() if any(v in stringa for v in vs)]

这里我们将检查每个键值对的条件any(v in stringa for v in vs)。这意味着我们迭代v中的每个元素,并检查该元素v是否是stringa的子串。如果有这样的元素,any(..)将返回True。否则它将返回False。一旦找到这样一个元素,它就会停止寻找另一个元素

正在生成:

>>> [k for k, vs in d.items() if any(v in stringa for v in vs)]
['b']

Note: do not use dict as a variable name: it will overwrite the dict class reference. I used d here.

相关问题 更多 >