I need a dict that inherits its mappings

Terry Reedy tjreedy at udel.edu
Thu Jun 25 14:21:18 EDT 2009

samwyse wrote:
> I need a dict-like object that, if it doesn't contain a key, will
> return the value from a "parent" object.  Is there an easy way to do
> this so I don't have to define __getitem__ and __contains__ and others
> that I haven't even thought of yet?  Here's a use case, if you're
> confused:
> en_GB=mydict()
> en_US=mydict(en_GB)
> en_GB['bonnet']='part of your car'
> print en_US['bonnet']  # prints 'part of your car'
> en_US['bonnet']='a type of hat'
> print en_US['bonnet']  # prints 'a type of hat'
> print en_GB['bonnet']  # prints 'part of your car'

For that specific case:

def lookup(key):
   try: return en_US[key]
   except KeyError: return en_GB[key]

More generally,

def make_lookup_with_backup(d1, d2):
   def _l(key):
     try: return d1[key]
     except KeyError: return d2[key]
   return _

Terry Jan Reedy

More information about the Python-list mailing list