你所做的事情基本上是削弱了字典(dict
)的效率,因此最好自己创建一个类似于字典的类。下面是一个简单的例子:
from re import search, I
class RegexMap(object):
def __init__(self, *args, **kwargs):
self._items = dict(*args, **kwargs)
def __getitem__(self, key):
for regex in self._items.keys():
if search(regex, key, I):
return self._items[regex]
raise KeyError
使用方法:
>>> rm = RegexMap({'\s*hello\s*world\s*':1, '\s*foo\s*bar\s*':2})
>>> rm['Hello World']
1
>>> rm['foobar']
2
>>> rm['baz']
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
rm['baz']
File "C:\Users\dmurphy\Documents\python\_t.py", line 10, in __getitem__
raise KeyError
KeyError
>>>
从那里,您可以添加更多的dict
功能。请参阅数据模型文档。
这确实违反了您的“无迭代”条款,但我不确定如果您想要泛化到正则表达式是否有任何解决办法。