所以我有一个字典,里面有各种键,这些键的值在各种大小的列表中:
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:
条件
stringa in v
不正确,因为它将检查整个stringa
是否是列表中的元素。元素'blahfourblah'
不在列表['three', 'four', 'five']
中。所以这是行不通的可以将构造与
any(..)
一起使用:这里我们将检查每个键值对的条件
any(v in stringa for v in vs)
。这意味着我们迭代v
中的每个元素,并检查该元素v
是否是stringa
的子串。如果有这样的元素,any(..)
将返回True
。否则它将返回False
。一旦找到这样一个元素,它就会停止寻找另一个元素正在生成:
相关问题 更多 >
编程相关推荐