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

标签 python string dictionary

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

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.

关于python - 如果其中一个键的值在字符串中,则返回字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45313484/

相关文章:

firebase - Flutter Firestore更新地​​图项

python - 从 python 字典中提取信息

c++ - 遍历列表映射?

python - 如何避免 sympy 中无用的分段解决方案

python : How to add vertical scroll in RecycleView

java - StrTokenizer 分割字符串的行为不一致

string - 如何在 bash 脚本中转义字符串

python - 迭代 Pandas 数据框,检查值并创建其中一些

python - 在带适配器的 sqlite3 中使用小数和货币时出现问题

python - 为什么使用 'in' 运算符搜索子串比使用 KMP 算法更快?