# 상품 리스트를 카테고리별로 분류하여 딕셔너리를 만드세요.
products = [
{"category": "전자제품", "name": "키보드"},
{"category": "의류", "name": "티셔츠"},
{"category": "전자제품", "name": "마우스"},
{"category": "전자제품", "name": "노트북"},
{"category": "식품", "name": "사과"},
{"category": "식품", "name": "배"},
{"category": "의류", "name": "청바지"}
]
grouped_data = {}
print(f"그룹화 결과: {grouped_data}")
각 카테고리 별로 분류하기 위해서는 이런식의 형태가 될 것 이다.
grouped_data = { 전자제품 : [키보드, 마우스, 노트북], 의류 : [티셔츠, 청바지] ... }
그러기 위해서는 각 카테고리를 grouped_data 딕셔너리 key값에 정의하고
해당 카테고리에 맞는 제품들의 이름을 리스트 형식으로 추가해야 겠다.
products = [
{"category": "전자제품", "name": "키보드"},
{"category": "의류", "name": "티셔츠"},
{"category": "전자제품", "name": "마우스"},
{"category": "전자제품", "name": "노트북"},
{"category": "식품", "name": "사과"},
{"category": "식품", "name": "배"},
{"category": "의류", "name": "청바지"}
]
grouped_data = {}
for item in products:
category = item["category"]
name = item["name"]
print(f"그룹화 결과: {grouped_data}")
먼저 products를 for문으로 순회하며 각 상품 객체를 하나씩 가져온다.
이후 데이터 그룹핑에 필요한 값인 category와 name을 각각 변수로 할당한다.
products = [
{"category": "전자제품", "name": "키보드"},
{"category": "의류", "name": "티셔츠"},
{"category": "전자제품", "name": "마우스"},
{"category": "전자제품", "name": "노트북"},
{"category": "식품", "name": "사과"},
{"category": "식품", "name": "배"},
{"category": "의류", "name": "청바지"}
]
grouped_data = {}
for item in products:
category = item["category"]
name = item["name"]
grouped_data[category] = []
grouped_data[category].append(name)
print(f"그룹화 결과: {grouped_data}")
[문제발생]
grouped_data에 카테고리를 key로 하고, 상품 이름을 리스트 형태로 저장하려 했다.
그러나 grouped_data는 초기 상태가 빈 딕셔너리이기 때문에,
존재하지 않는 key에 바로 append()를 호출하면 오류가 발생했다.
처음에는 for문 안에서 카테고리를 key로 하고
빈 리스트를 직접 만들어줬는데,
반복문이 돌 때마다 리스트가 초기화되는 문제가 있었다.
이를 해결하기 위해
해당 카테고리가 처음 등장한 경우에만 리스트를 생성하도록 처리했고,
그 과정에서 dict.get()을 사용했다.
products = [
{"category": "전자제품", "name": "키보드"},
{"category": "의류", "name": "티셔츠"},
{"category": "전자제품", "name": "마우스"},
{"category": "전자제품", "name": "노트북"},
{"category": "식품", "name": "사과"},
{"category": "식품", "name": "배"},
{"category": "의류", "name": "청바지"}
]
grouped_data = {}
# grouped_data는 처음에 빈 딕셔너리 {}
# → 아직 어떤 category도 key로 존재하지 않는 상태
for item in products:
category = item["category"]
name = item["name"]
# 현재 category가 grouped_data에 없다면
# → 처음 등장한 카테고리이므로 빈 리스트를 먼저 생성
if grouped_data.get(category) is None:
grouped_data[category] = []
# 해당 카테고리 리스트에 name 추가
grouped_data[category].append(name)
print(f"그룹화 결과: {grouped_data}")
get() - 안전하게 값 조회
1️⃣ 일반 접근 방식의 문제점
data = {"name": "철수", "age": 20}
print(data["email"])
# KeyError: 'email'
- 키가 없으면 바로 에러 발생
- 프로그램이 멈출 수 있음
2️⃣ get()을 쓰는 이유 (에러 방지)
print(data.get("email"))
# None
- 키가 없으면 에러 ❌
- 대신 None 반환
👉 안전함
3️⃣ 기본값을 줄 수 있어서 좋다
print(data.get("email", "없음"))
# 없음
- 키가 없을 때 원하는 값으로 대체 가능
- 조건문을 줄일 수 있음