Joa*_*dao 1 python string dictionary
所以我有一个包含各种键的字典,这些键的值在各种大小的列表中:
dict = {'a' : ['one', 'two'],
'b' : ['three', 'four', 'five'],
'c' : ['six']}
Run Code Online (Sandbox Code Playgroud)
如果我有一个字符串如下:
stringa = 'blahfourblah'
Run Code Online (Sandbox Code Playgroud)
我想返回'b',因为在stringa中找到了键'b'(即'4')的一个值.
我试过以下代码:
[k for k, v in dict.items() if stringa in v]
Run Code Online (Sandbox Code Playgroud)
但这只会返回以下内容:
[]
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
条件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)]Run Code Online (Sandbox Code Playgroud)
对于每个键值对,我们将检查条件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']
Run Code Online (Sandbox Code Playgroud)
注意:不要
dict用作变量名:它将覆盖dict类引用.我d在这里用过.
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |