기록용으로 남겨둔다.
비슷한 형식의 여러 개의 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' 카테고리의 다른 글
[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 |
[Pytesseract를 사용한 메이플스토리 길드 스코어 분석] 메이플 랭킹 정보 수집 후 파일로 저장 (0) | 2022.03.30 |
댓글