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