Skip to main content
 首页 » 编程设计

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

2025年05月04日41dflying

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

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

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

stringa = 'blahfourblah' 

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

我试过下面的代码:

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

但这只会返回以下内容:

[] 

如有任何帮助,我们将不胜感激!

请您参考如下方法:

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

您可以使用带有 any(..) 的结构:

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

在这里,对于每个键值对,我们将检查条件 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.