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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to