如何用正则模糊匹配Python字典字符串键并返回首个匹配结果?
问题原因
Python 中直接使用yax in my_dict语法做的是精确键匹配,只有当字典中存在完全等于yax的键时才会返回True,所以你的代码会进入else分支。
实现方案
你可以遍历字典的键,匹配第一个包含目标子串的键即可,Python 3.7及以上版本字典默认保留插入顺序,遍历拿到的第一个匹配结果就是你需要的首个符合条件的结果。
基础遍历写法(易读性高)
my_dict = {'dummy': 0, 'K1::foo(bar::z(x,u))': 1, 'K2::foo()': 2} yax = 'foo' match_value = None for key in my_dict: if yax in key: match_value = my_dict[key] break if match_value is not None: print(match_value) else: print("Given value does not exist")
简洁写法(生成器表达式+next)
my_dict = {'dummy': 0, 'K1::foo(bar::z(x,u))': 1, 'K2::foo()': 2} yax = 'foo' # next第二个参数为无匹配时的默认返回值 match_value = next((my_dict[key] for key in my_dict if yax in key), None) if match_value is not None: print(match_value) else: print("Given value does not exist")
效果说明
- 搜索
foo时,第一个匹配的键是K1::foo(bar::z(x,u)),输出结果为1 - 搜索
bar时,同样匹配上述键,输出结果为1
完全符合你只取第一个匹配结果的需求。
内容的提问来源于stack exchange,提问作者mahmood
相关产品推荐
相关产品推荐

