Search the web
Sign In
New User? Sign Up
python-list · Python List
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Show off your group to the world. Share a photo of your group with us.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Dictionary that uses regular expressions   Message List  
Reply | Forward Message #106127 of 122067 |
Hello all,

I wrote the code below. It is simply a dictionary that uses regular
expressions to match keys. A quick look at _test() will give you an
example.

Is there a module that already does this? Is there a way and would it
be better to use list comprehension? (using python 2.3)

Just looking for a better or more pythonic way to do it.

import re

class ReDict(dict):
'''
A dictionary that uses regular expressions keys

NOTE:
if the redict finds more than one key that matches the re it
returns a redict of all of the matching keys
'''
def __init__(self):
dict.__init__(self)
self.re=1

def reOn(self):
'''
turn regular expression matching on
'''
self.re=1

def reOff(self):
'''
turn regular expression matching off
'''
self.re=0

def __getitem__(self,key):
if self.re ==1:
temp = ReDict()
for item in self.items():
if re.search(key,item[0]): #line match
temp[item[0]]=item[1]

if len(temp)==1:
return temp.values()[0]

return temp
else:
return dict.__getitem__(self,key)


def _test():
d=ReDict()

d["price"]=7.25
d['call jan 5.0']=1
d['call jan 7.5']=1.5
d['put jan 7.5']=7.2

d['call feb 5.0']=2
d['call feb 7.5']=2.5
d['put feb 7.5']=6.8

d['call mar 5.0']=3
d['call mar 7.5']=3.5
d['put mar 7.5']=4

d['call apr 5.0']=4
d['call apr 7.5']=4.5
d['put apr 7.5']=6.2

d['call may 5.0']=5
d['call may 7.5']=5.5
d['put may 7.5']=4.9

print d['price'] #prints the price
print d['call']['may']['7.5'] # prints individual value
print d['call'] #returns a redict of all calls
print d['put'] #returns a redict of all puts
print d['may'] #returns a redict of all options in may

_test()


Thanks,
Erik Lechak
--
http://mail.python.org/mailman/listinfo/python-list



Thu Aug 21, 2003 4:49 am

prochak@...
Send Email Send Email

Forward
Message #106127 of 122067 |
Expand Messages Author Sort by Date

Hello all, I wrote the code below. It is simply a dictionary that uses regular expressions to match keys. A quick look at _test() will give you an example. ...
Erik Lechak
prochak@...
Send Email
Aug 21, 2003
4:54 am

"Erik Lechak" <prochak@...> wrote in message news:1f0bdf30.0308202049.7d251469@.... ... Google may prove me wrong, but this looks like...
Raymond Hettinger
vze4rx4y@...
Send Email
Aug 21, 2003
5:14 am

... Some months ago I started rewriting the C regexps module to allow for matching pure-python string types[1]. The python class would just have to define a...
Jack Diederich
jack@...
Send Email
Aug 26, 2003
2:45 pm

"Erik Lechak" <prochak@...> wrote in message news:1f0bdf30.0308202049.7d251469@.... ... Not that I know of ... List comp builds a...
Terry Reedy
tjreedy@...
Send Email
Aug 21, 2003
5:27 am

I would leave the __getitem__() method alone and just add a filterMatches(self, regexp) returning a ReDict or findMatches(self, regexp) returning a...
Peter Otten
__peter__@...
Send Email
Aug 21, 2003
7:49 am

Hey, cool code, I wrote a dictionary-keyed dictionary a while back to get something like the same functionality, basically I wanted an n-dimensional database...
Corey Coughlin
corey.coughlin@...
Send Email
Sep 5, 2003
2:21 am
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help