On Fri, Apr 22, 2011 at 6:55 AM, Vlastimil Brom <vlastimil.b...@gmail.com> 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.?
I second MRAB's all() suggestion. The use of object() as a higher-rank None is entirely normal; don't worry about it. Also, the following occurs to me as another idiomatic, perhaps more /conceptually/ elegant possibility, but it's /practically/ speaking quite inefficient (unless perhaps some dict view tricks can be exploited): def is_subdict(sub, larger): return set(sub.items()).issubset(set(larger.items())) Cheers, Chris -- http://mail.python.org/mailman/listinfo/python-list