반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- html
- Eclipse
- Java
- junit
- 단위테스트
- javascript
- java테스트
- IntelliJ
- junit5
- ArrayList
- 정규식
- Array
- 자바스크립트
- 스프링부트
- list
- Visual Studio Code
- math
- CSS
- 자바
- 배열
- 인텔리제이
- vscode
- 테스트자동화
- HashMap
- string
- js
- 자바문법
- 문자열
- SpringBoot
- input
Archives
- Today
- Total
어제 오늘 내일
[Python 실전] "복잡한 JSON도 척척!" 중첩 딕셔너리 데이터 추출 기술 본문
1. 중첩 구조 접근의 정석 (계단식 접근)
JSON 데이터는 보통 딕셔너리와 리스트가 층층이 쌓인 구조입니다. 대괄호[]를 연달아 써서 안쪽으로 들어갈 수 있습니다.
📌 예제 코드: 기상청 API 데이터 가공하기 (가상)
weather_json = {
"status": "OK",
"result": {
"location": "Seoul",
"forecast": [
{"date": "2026-02-25", "temp": 12, "desc": "Sunny"},
{"date": "2026-02-26", "temp": 8, "desc": "Rainy"}
]
}
}
# '내일(26일)의 기온'을 가져오고 싶다면?
# 딕셔너리(result) -> 딕셔너리(forecast) -> 리스트의 두 번째[1] -> 딕셔너리(temp)
tomorrow_temp = weather_json["result"]["forecast"][1]["temp"]
print(f"내일 기온: {tomorrow_temp}도") # 8도
2. 에러 방지용 필수 기술: 체이닝
중첩 구조에서 가장 큰 문제는 중간에 키가 하나라도 없으면 코드가 멈춘다는 것입니다. 이를 방지하기 위해 get()을 연속으로 사용하거나 기본값을 빈 딕셔너리로 주는 팁이 있습니다.
📌 팁 1: 안전하게 파고들기
# 'description' 키가 없을 수도 있는 상황이라면?
# 중간에 None이 반환되면 다음 get에서 에러가 날 수 있으므로 빈 딕셔너리{}를 기본값으로 줍니다.
desc = weather_json.get("result", {}).get("forecast", [{}])[0].get("desc", "정보 없음")
3. 고수의 도구: 라이브러리 (강력 추천)
만약 구조가 너무 깊고 복잡하다면, 파이썬 기본 기능만으로는 코드가 매우 지저분해집니다. 이때 glom이라는 라이브러리를 사용하면 마치 파일 경로를 적듯 데이터를 추출할 수 있습니다.
📌 예제 코드: glom으로 한 줄에 추출하기
# pip install glom
from glom import glom
target_path = 'result.forecast.1.temp'
temp = glom(weather_json, target_path)
print(temp) # 8
4. 실전 활용: 데이터 전처리 (리스트 컴프리헨션 콜라보)
중첩 구조 안에 있는 특정 값들만 모아서 새로운 리스트를 만들 때 가장 많이 사용됩니다.
📌 예제 코드: 모든 날짜의 기온만 리스트로 뽑기
# forecast 리스트 안의 모든 딕셔너리에서 'temp'만 추출
all_temps = [f["temp"] for f in weather_json["result"]["forecast"]]
print(all_temps) # [12, 8]
📝 중첩 데이터 파싱 핵심 요약
- 구조 파악: 먼저 데이터의 어디가 딕셔너리
{}이고 어디가 리스트[]인지 구분하세요. - 안전 우선: 실무에서는
json["key"]보다는json.get("key", {})처럼 기본값을 설정하는 습관이 프로그램을 튼튼하게 만듭니다. - 반복문 활용: 리스트 형태의 중첩 데이터는 리스트 컴프리헨션으로 가공하는 것이 가장 빠르고 깔끔합니다.
반응형
'IT > Python' 카테고리의 다른 글
| [Python 실전] 파이썬 딕셔너리를 파일로 저장하는 법: JSON 활용 가이드 (0) | 2026.06.08 |
|---|---|
| [Python 실전] 딕셔너리로 코드 속도 10배 올리기: 메모이제이션(Memoization) (0) | 2026.06.07 |
| [Python 실전] "KeyError는 이제 안녕!" 딕셔너리 안전 삭제 및 병합 가이드 (0) | 2026.06.04 |
| [Python 실전] "딕셔너리 고수되는 법" 정렬과 컴프리헨션 완벽 마스터 (0) | 2026.06.03 |
| [Python 기초] 딕셔너리(Dictionary) 완벽 가이드 (0) | 2026.05.26 |
Comments
