Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## based on https://stackoverflow.com/a/60124334/6146136
- def clean_vals(obj, *vals, allowFalse=True):
- if not isinstance(obj, (dict,list,set,tuple)): return obj
- if not vals: vals = [None]
- if isinstance(obj, (list,set,tuple)):
- return type(obj)([cv for cv in [
- clean_vals(v, *vals, allowFalse=allowFalse)
- for v in obj if not v in vals
- ] if cv not in vals])
- return {ck: cv for ck, cv in [
- (k, clean_vals(v, *vals, allowFalse=allowFalse))
- for k,v in obj.items() if not v in vals
- ] if cv not in vals}
- def removeNested(obj, *keys, parentKeys=[], chainKeys=True):
- if not keys or not isinstance(obj, (dict,list,set,tuple)): return obj
- if not chainKeys or any([isinstance(k, (list,tuple)) for k in keys]):
- keys = [k if isinstance(k, (list,tuple)) else [k] for k in keys]
- for k in keys: obj = removeNested(obj, *k, parentKeys=parentKeys)
- ski = -1*len(keys)
- if isinstance(obj, (list,set,tuple)):
- return type(obj)([removeNested(
- v, *keys, parentKeys=parentKeys+[i]
- ) for i,v in enumerate(obj) if tuple(parentKeys+[i])[ski:] != keys])
- return {k: removeNested(
- v, *keys, parentKeys=parentKeys+[k]
- ) for k,v in obj.items() if tuple(parentKeys+[k])[ski:] != keys}
Advertisement
Add Comment
Please, Sign In to add comment