Delete dict and subdict items of some name
Terry Reedy
tjreedy at udel.edu
Tue Dec 18 11:29:37 EST 2012
On 12/18/2012 10:27 AM, Gnarlodious wrote:
> On Tuesday, December 18, 2012 3:31:41 AM UTC-7, Hans Mulder wrote:
>> On 18/12/12 06:30:48, Gnarlodious wrote:
>>> from plistlib import readPlist
I do not see this used below.
>>> def explicate(listDicts):
>>> for dict in listDicts:
>>> if 'FavIcon' in dict:
>>> del dict['FavIcon']
>>> if 'Children' in dict:
>>> dict['Children']=explicate(dict['Children'])
>>> return listDicts
>> It would be more Pythonic to return None, to indicate that you've
>> changed the list in situ.
And since it is being changed at the top level (by deletion), it should
be changed in place all the way down.
>> Since None is the default return value, this means you can leave
>> out the return statement.
dict['Children']=explicate(dict['Children'])
would then need to be
explicate(dict['Children'])
> But then it only operates on the outer layer,
> inner layers might get processed but not written.
I believe the above answers your concern. But to be sure it is correct,
YOU NEED TEST CASES. In fact, your original post should have contained
at least one non-trivial test case: an input dict and what you wanted it
to look like after processing. Writing at least some tests before code
is a great idea.
--
Terry Jan Reedy
More information about the Python-list
mailing list