Delete dict and subdict items of some name

Chris Angelico rosuav at gmail.com
Mon Dec 17 16:53:16 EST 2012


On Tue, Dec 18, 2012 at 8:33 AM, Mitya Sirenef <msirenef at lightbird.net> wrote:
> On 12/17/2012 01:30 PM, Tim Chase wrote:
>>>> On 12/17/12 11:43, Mitya Sirenef wrote:
>>>>>> On 12/17/2012 12:27 PM, Gnarlodious wrote:
>>>>>>>> Hello. What I want to do is delete every dictionary key/value
>>>> of the name 'Favicon' regardless of depth in subdicts, of which
>>>> there are many. What is the best way to do it?
>>>>>> Something like this should work:
>>>>>> def delkey(d, key):
>>> if isinstance(d, dict):
>>> if key in d: del d[key]
>>> for val in d.values():
>>> delkey(val, key)
>>>> Unless you have something hatefully recursive like
>>>> d = {}
>> d["hello"] = d
>>>> :-)
>>> True -- didn't think of that..!
>> I guess then adding a check 'if val is not d: delkey(val, key)'
> would take care of it?

Nope, recursion could occur anywhere. You'd have to maintain a set of
"visited nodes" (or their id()s, same diff), and skip any that are in
it.
ChrisA


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /