string formatting with missing dictionary key

gyro gyromagnetic at excite.com
Tue Jan 14 07:49:54 EST 2003


> (Requires Python 2.2)
> 
> class D(dict):
>     def __getitem__(self, item):
>         if not self.has_key(item): return "default"
>         return super(D, self).__getitem__(item)
>         
> print "%(a)s ; %(d)s; %(e)s" % D({'a':1, 'b':2, 'c':3})
> 
>  <from Jeff Epler>


> 
>>>>>>> from UserDict import UserDict
>>>>>>> class MyDict(UserDict):
> 
> ...  def __getitem__(self, k):
> ...   return self.data.get(k, 'no data')
> ...
> 
> 
>>>>>>>
> 
> 
> --Gilles
> 


>>>>class myDict:
> 
> ... 	def __init__(self,default='default'):
> ... 		self.mdict={}
> ... 		self.default=default
> ... 	def __setitem__(self,key,value):
> ... 		self.mdict[key]=value
> ... 	def __getitem__(self,key):
> ... 		return self.mdict.get(key,self.default)
> ... 	def keys(self):
> ... 		return self.mdict.keys()
> ... 	def values(self):
> ... 		return self.mdict.values()
> ... 	def items(self):
> ... 		return self.mdict.items()
> ... 	def update(self,dict):
> ... 		self.mdict.update(dict)
> ... 
> 
> 
> Cheers Peter!


Thanks Jeff, Gilles, and Peter!
Looks like subclassing dict/UserDict or creating a new dict class is the 
way to go.

-g





More information about the Python-list mailing list