首页 > 解决方案 > Python 检查字符串是否包含任何字典的键

问题描述

给定示例字典:

LANGUAGE_TO_ISO = {
    "en": "en",
    "eng": "en",
    "english": "en",
    "es": "es",
    "spanish": "es",
    ...
}

和一个给定的示例字符串:

book_title = "The Dark Tower - english"
book_title = "The Dark Tower - eng"
book_title = "The Dark Tower 2 - english 2nd edition"

是否有一个我不知道的 Python 函数允许搜索字符串是否包含任何字典键然后返回相应的值,而不必在 ISO 字典中循环?

这样,我可以从一种语言的许多不同编写方式中提取 ISO 语言。

如果有人知道这样做的不那么肮脏的方式,请分享:)

更新:正如 Willem 提到的,忘记指定“english”、“eng”、“spanish”等将由单词分隔。点、逗号、连字符、空格、...

标签: pythonpython-3.x

解决方案


这应该为您提供公共密钥:

set(book_title.split()).intersection(set(LANGUAGE_TO_ISO.keys()))

您可以在字典中查找以获取相应的值。


响应 OP 的评论,包括 shell 上的输出片段:

In [4]: LANGUAGE_TO_ISO = { 
   ...:     "en": "en", 
   ...:     "eng": "en", 
   ...:     "english": "en", 
   ...:     "es": "es", 
   ...:     "spanish": "es", 
   ...: }                                                                                                                                                       

In [5]: book_title = "The Dark Tower - english"                                                                                                                 

In [6]: set(book_title.split()).intersection(set(LANGUAGE_TO_ISO.keys()))                                                                                       
Out[6]: {'english'}

推荐阅读