import json defcore = json.loads(open('2015.next.json', 'r').read()) new_caps = json.loads(open('newcaps.json', 'r').read()) capabilities = {} old_capabilities = defcore["capabilities"] for old_capability in old_capabilities: old_capability = old_capabilities[old_capability] achievements = old_capability["achievements"] admin = old_capability["admin"] try: required_since = old_capability["required-since"] except: required_since = "" description = old_capability["description"] name = old_capability["name"] try: project = old_capability["project"] except: project = "TODO" tests = old_capability["tests"] for test in tests: try: flag = old_capability["tests"][test]["flag"] except: flag = None new_capability_name = new_caps[test]["capability"] try: capability = capabilities[new_capability_name] except: capability = {} capability["achievements"] = set() capability["admin"] = set() capability["required-since"] = set() capability["description"] = set() capability["project"] = set() capability["tests"] = {} for achievement in achievements: capability["achievements"].add(achievement) capability["admin"].add(str(admin)) capability["required-since"].add(required_since) capability["description"].add(description) capability["project"].add(project) capability["tests"][test] = tests[test] capabilities[new_capability_name] = capability for capability in capabilities: cap = capabilities[capability] cap["achievements"] = list(cap["achievements"]) cap["admin"] = ", ".join(cap["admin"]) cap["required-since"] = ", ".join(cap["required-since"]) cap["description"] = ", ".join(cap["description"]) cap["project"] = ", ".join(cap["project"]) print json.dumps(capabilities, sort_keys=True, indent=2, separators=(',', ': '))