Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查字典的任何键中是否出现字符串_Python_Dictionary - Fatal编程技术网

Python 检查字典的任何键中是否出现字符串

Python 检查字典的任何键中是否出现字符串,python,dictionary,Python,Dictionary,我试图检查字符串是否在字典的一个键中 if message in a_dict: # this will only work if message is exactly one of the keys #do stuff 我希望条件返回True,即使message只是a_dict的一个键的一部分 我该怎么做?有没有办法在字符串中添加regex*?或者有更好的方法吗?您可以使用任何: elif any(message in key for key in a_dict): do_s

我试图检查字符串是否在字典的一个键中

if message in a_dict: # this will only work if message is exactly one of the keys
    #do stuff
我希望条件返回
True
,即使
message
只是
a_dict
的一个键的一部分


我该怎么做?有没有办法在字符串中添加regex
*
?或者有更好的方法吗?

您可以使用
任何

elif any(message in key for key in a_dict):
    do_something()
如果您还需要包含消息的密钥:

else:
    key = next((message in key for key in a_dict), None)
    if key is not None:
        do_something(key)

使用Python的
in
操作符不能真正实现您想要的功能。最好用手进行检查-迭代所有键,查看其中是否有任何键包含您的
消息

,然后您需要迭代键并检查每个键。这确实意味着失去了字典的很多效率。很好,有没有一种方法可以将
key
转换为
dou\u some
?您只需要一个键还是所有包含消息的键?嗯,使用这两个示例是否都有问题,例如:
elif…:key=next…
BC当我尝试此操作时,下一个函数似乎随机返回false/true。第二个示例对我不起作用。我试着这样做来看看问题是什么:
key=list(message in key for key in a dict)
这返回了一个真/假值列表,而不是key。好的,我使用了这个
list(key for key in a dict if message in key)
,它工作了。