#!/usr/bin/env python import copy class DictUtility: @classmethod def deepCopy(cls, dict, includeKeys=[], excludeKeys=[]): dict2 = {} if len(includeKeys): for key in includeKeys: value = dict.get(key) if value is not None: dict2[key] = copy.deepcopy(value) elif len(excludeKeys): for key in dict.keys(): if key not in excludeKeys: dict2[key] = copy.deepcopy(dict[key]) else: dict2 = copy.deepcopy(dict) return dict2 @classmethod def deepCopy2(cls, dict, includeKeys=[], excludeKeys=[]): dict2 = copy.deepcopy(dict) if len(includeKeys): for key in dict2.keys(): if not key in includeKeys: del dict2[key] elif len(excludeKeys): for key in excludeKeys: if dict2.has_key(key): del dict2[key] return dict2 ####################################################################### # Testing. if __name__ == '__main__': print DictUtility.deepCopy({'k1': '1', 'k2' : '2'}, excludeKeys=['k1']) print DictUtility.deepCopy({'k1': '1', 'k2' : '2'}, includeKeys=['k1']) print DictUtility.deepCopy({'k1': '1', 'k2' : '2'})