繁体   English   中英

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

[英]Return dictionary key if one of key's values is within string

因此,我有一本包含各种键的字典,这些键在各种大小的列表中都有值:

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

如果我有如下字符串:

stringa = 'blahfourblah'

我想返回“ b”,因为在字符串中找到了键“ b”的值之一(即“四个”)。

我尝试了以下代码:

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

但这仅返回以下内容:

[]

任何帮助将不胜感激!

stringa in v的条件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']

注意:请勿将dict用作变量名:它将覆盖dict类引用。 我在这里用d

暂无
暂无

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

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