I don't quite understand why this doesn't work, so would appreciate it if someone could help me understand. I can do this a different way, but want to try to understand this
- Code: Select all
def removeTriggerFromDict(d, triggerId):
for k, v in d.iteritems():
if isinstance(v, dict):
v = removeTriggerFromDict(v, triggerId)
elif k == u'triggers':
tmpList = [t for t in v if t != triggerId]
v = tmpList
else:
raise ValueError(u'Possible error in triggerMap dictionary, v: %s' % unicode(v))
return d
d is a nested dictionary, with a list of trigger ids some places, e.g.
- Code: Select all
d[3][4][5][u'triggers'] = [123,456,789]
d[5][7][u'triggers'] = [123,789]
What I'm trying to do is remove all references to a trigger id, i.e.
- Code: Select all
d = removeTriggerFromDict(d, 123)
would result in
- Code: Select all
d[3][4][5][u'triggers'] = [456,789]
d[5][7][u'triggers'] = [789]
Thanks