기록용으로 남겨둔다.
비슷한 형식의 여러 개의 json이 있을 때 같은 key에 대해 value를 더해서 하나의 json으로 만드는 작업이 필요했다.
''' [99] json 항목별 개수 더하기 test ''' # Test용 JSON 데이터 1 json_a = { "characterItemInfo": { "equip": { "1": ["매커네이터 펜던트", 1, ".\\data\\character\\item_image\\equip\\매커네이터 펜던트"], "2": ["강화된 검", 1, ".\\data\\character\\item_image\\equip\\강화된 검"], }, "use": { "1": ["마나 물약", 3, ".\\data\\character\\item_image\\use\\마나 물약"], "2": ["회복 물약", 2, ".\\data\\character\\item_image\\use\\회복 물약"], }, "etc": { "1": ["고대의 문양", 5, ".\\data\\character\\item_image\\etc\\고대의 문양"], }, "setup": { "1": ["로얄 소파", 1, ".\\data\\character\\item_image\\setup\\로얄 소파"], }, "cash": { "1": ["스타 이어링", 1, ".\\data\\character\\item_image\\cash\\스타 이어링"], "2": ["화려한 왕관", 1, ".\\data\\character\\item_image\\cash\\화려한 왕관"], } } } # Test용 JSON 데이터 2 json_b = { "characterItemInfo": { "equip": { "1": ["매커네이터 펜던트", 1, ".\\data\\character\\item_image\\equip\\매커네이터 펜던트"], "2": ["흑룡의 갑옷", 1, ".\\data\\character\\item_image\\equip\\흑룡의 갑옷"], "3": ["금광 마법봉", 2, ".\\data\\character\\item_image\\equip\\금광 마법봉"], }, "use": { "1": ["경험치 부스터", 1, ".\\data\\character\\item_image\\use\\경험치 부스터"], "2": ["신속의 부적", 3, ".\\data\\character\\item_image\\use\\신속의 부적"], }, "etc": { "1": ["고급 마법서", 2, ".\\data\\character\\item_image\\etc\\고급 마법서"], }, "setup": { "1": ["금빛 책상", 1, ".\\data\\character\\item_image\\setup\\금빛 책상"], "2": ["푸른 의자", 1, ".\\data\\character\\item_image\\setup\\푸른 의자"], }, "cash": { "1": ["감탄 표시", 1, ".\\data\\character\\item_image\\cash\\감탄 표시"], "2": ["신비로운 모자", 1, ".\\data\\character\\item_image\\cash\\신비로운 모자"], } } } # Test용 JSON 데이터 3 json_c = { "characterItemInfo": { "equip": { "1": ["화염의 지팡이", 1, ".\\data\\character\\item_image\\equip\\화염의 지팡이"], "2": ["금광 마법봉", 2, ".\\data\\character\\item_image\\equip\\금광 마법봉"], }, "use": { "1": ["독약", 2, ".\\data\\character\\item_image\\use\\독약"], "2": ["마력 회복 물약", 1, ".\\data\\character\\item_image\\use\\마력 회복 물약"], }, "etc": { "1": ["구원의 기도서", 3, ".\\data\\character\\item_image\\etc\\구원의 기도서"], "2": ["고급 마법서", 1, ".\\data\\character\\item_image\\etc\\고급 마법서"], }, "setup": { "1": ["푸른 의자", 1, ".\\data\\character\\item_image\\setup\\푸른 의자"], }, "cash": { "1": ["천사 날개", 1, ".\\data\\character\\item_image\\cash\\천사 날개"], }, "test": { "1": ["test", 1, "\\test"] } } } def merge_item_data(json_list): merged_data = {} for json_data in json_list: for category, category_data in json_data["characterItemInfo"].items(): if category not in merged_data: merged_data[category] = {} for key, item_data in category_data.items(): name, count, image_src = item_data if name not in merged_data[category]: merged_data[category][name] = [count, image_src] else: merged_data[category][name][0] += count #return {"characterItemInfo": merged_data} return merged_data merge_data = [] merge_data.append(json_a) merge_data.append(json_b) merge_data.append(json_c) # JSON 데이터 합치기 merged_json = merge_item_data(merge_data) #for category, category_data in merged_json["characterItemInfo"].items(): for category, category_data in merged_json.items(): print(category) for key, item_data in category_data.items(): count, image_src = item_data print(key) print(count, image_src) print() print(merged_json) print() print(merged_json["equip"]) print() print(merged_json["use"]) print() print(merged_json["etc"]) print() print(merged_json["setup"]) print() print(merged_json["cash"]) print() print(merged_json["test"])
출력해보면 다음과 같은 결과가 나온다.

끝!
'공부 > python' 카테고리의 다른 글
[django] 장고 예제 프로젝트 만들기 (1) | 2024.06.09 |
---|---|
[pyqt] 스크롤 영역 구현하기 (0) | 2023.12.25 |
[pip install error] ERROR: To modify pip, please run the following command: ... (1) | 2022.11.27 |
[Pytesseract를 사용한 메이플스토리 길드 스코어 분석] 파이썬 스크립트 exe 파일로 변환 및 프로그램 작동 방법 (0) | 2022.03.30 |
[Pytesseract를 사용한 메이플스토리 길드 스코어 분석] 저장된 엑셀 파일 분석하기 (0) | 2022.03.30 |
댓글