On 22/04/2011 14:55, Vlastimil Brom wrote:
Hi all,
I'd like to ask for comments or advice on a simple code for testing a
"subdict", i.e. check whether all items of a given dictionary are
present in a reference dictionary.
Sofar I have:

def is_subdict(test_dct, base_dct):
     """Test whether all the items of test_dct are present in base_dct."""
     unique_obj = object()
     for key, value in test_dct.items():
         if not base_dct.get(key, unique_obj) == value:
             return False
     return True

I'd like to ask for possibly more idiomatic solutions, or more obvious
ways to do this. Did I maybe missed some builtin possibility?
I am unsure whether the check  against an unique object() or the
negated comparison are usual.?
(The builtin exceptions are ok, in case anything not dict-like is
passed. A cornercase like>>>  is_subdict({}, 4)
True
doesen't seem to be worth a special check just now.)

You could shorten it slightly to:

def is_subdict(test_dct, base_dct):
    """Test whether all the items of test_dct are present in base_dct."""
    unique_obj = object()
return all(base_dct.get(key, unique_obj) == value for key, value in test_dct.items())
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to