On Fri, 22 Apr 2011 07:38:38 -0700, Chris Rebert wrote: > 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()))
That cannot work if either dict contains an unhashable value: >>> d = {2: []} >>> set(d.items()) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' But if you know your dict items are hashable, and your dicts not especially large, I don't see why we should fear the inefficiency of turning them into sets. Worrying about small efficiencies is usually counter-productive, especially in a language like Python that so often trades off machine efficiency for developer efficiency. -- Steven -- http://mail.python.org/mailman/listinfo/python-list