suggestions, comments on an "is_subdict" test

Peter Otten __peter__ at web.de
Fri Apr 22 13:30:59 EDT 2011


Zero Piraeus wrote:

>>> Anything wrong with this?
>>>
>>> def is_subdict(test_dct, base_dct):
>>> return test_dct <= base_dct and all(test_dct[k] == base_dct[k] for
>>> k in test_dct)
>>
>> It may raise a KeyError.
> 
> Really? That was what ``test_dct <= base_dct and`` ... is supposed to
> prevent. Have I missed something?

>>> {1:0} <= {2:0}
True
>>> def is_subdict(test_dct, base_dct):
...     return test_dct <= base_dct and all(test_dct[k] == base_dct[k] for
... k in test_dct)
...
>>> is_subdict({1:0}, {2:0})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in is_subdict
  File "<stdin>", line 3, in <genexpr>
KeyError: 1

I think you have to convert to sets before performing the <= comparison to 
get a proper subset test.




More information about the Python-list mailing list