python - 使用正则表达式搜索字典键
问题描述
我定义了一个带有字符串键的字典:
{'dummy': 0, 'K1::foo(bar::z(x,u))': 1, 'K2::foo()': 2}
我想搜索键模式(不是确切的单词),所以if 'foo' in my_dict:
应该返回 true。
yax = 'foo'
if yax in my_dict:
# Should definitely go here
value = my_dict[yax]
print(value)
else:
# Just for error checking that the given name doesn't exist in dictionary
print("Given value does not exist")
但是上面的代码转到该else
部分。
在示例中,foo
存在于两个键中。那没关系。第一场比赛没问题。再举一个例子,如果我搜索bar
,该if
陈述也应该是正确的。
解决方案
首先,要知道必须通过字典键搜索不是一个好方法。字典的目的是使用散列键启用对值的 O(1) 访问。
也就是说,您可以遍历键。
搜索任何子字符串:
d = {'dummy': 0, 'K1::foo(bar::z(x,u))': 1, 'K2::foo()': 2}
[k for k in d if 'foo' in k]
搜索一个独立的词:
import re
[k for k in d if re.search(r'\bfoo\b', k)]
输出:['K1::foo(bar::z(x,u))', 'K2::foo()']
作为字典理解:
{k:v for k,v in d.items() if 'foo' in k}
输出:{'K1::foo(bar::z(x,u))': 1, 'K2::foo()': 2}
推荐阅读
- php - 如何让我的 Wordpress(wp_query - 自定义帖子类型)、isotope.js 和 Bootstrap 过滤器正确显示?
- excel - 使用宏生成数据透视表(运行时错误 1004)
- angular - 如何将值从一个组件传递到另一个组件(没有@Input)
- python - 如何为提出的 QWidget 设置 QVariantAnimation?
- deep-learning - 在不平衡数据集上对多个对象训练 YOLO(对象检测)?
- excel - 一键单击选项按钮后VBA Excel按钮无效(ActiveX控件)
- c# - “自定义控件”中的 KeyDown 和 KeyUp 事件
- python - python - 从另一个文件导入的函数运行缓慢
- java - 关于块大小数量的日期范围搜索
- r - R 函数,用于在图案中的每个点周围创建圆盘,然后计算每个圆盘中的点数 [空间]