import re
class RegexDict(dict):
def __init__(self, d):
dict.__init__(self, d)
def __getitem__(self, key):
try:
return super(RegexDict, self).__getitem__(key)
except KeyError as ex:
for kkey, value in self.iteritems():
if re.match(kkey, str(key)):
return value
raise ex
usage:
z = RegexDict({
'a': 100,
'\d+': 300,
1: 3
})
z['re#\d+'] = 100
print z['a']
print z[2]
print z['a']
print z[1]
print z['re#200']
results:
100 300 3 100
No comments:
Post a Comment