어제 오늘 내일

[Python 실전] "딕셔너리 고수되는 법" 정렬과 컴프리헨션 완벽 마스터 본문

IT/Python

[Python 실전] "딕셔너리 고수되는 법" 정렬과 컴프리헨션 완벽 마스터

hi.anna 2026. 6. 3. 06:03

1. 딕셔너리 정렬 (Sorting)

딕셔너리는 기본적으로 순서가 중요하지 않은 자료형이지만, 출력하거나 분석할 때는 Key(이름표)나 Value(값)를 기준으로 정렬해야 할 때가 많습니다.

📌 Key(이름표) 기준 정렬

sorted() 함수를 사용하면 기본적으로 Key를 기준으로 정렬된 Key 리스트를 반환합니다.

scores = {"철수": 85, "영희": 90, "민수": 75}

# 1. Key 기준 오름차순 (가나다순)
sorted_keys = sorted(scores)
print(sorted_keys) # ['민수', '영희', '철수']

# 2. Key 기준 정렬된 새로운 딕셔너리 만들기
sorted_dict = {k: scores[k] for k in sorted(scores)}

📌 Value(값) 기준 정렬 (★실무 필수)

"점수가 높은 순서대로 정렬해 줘!"라고 할 때 쓰는 방식입니다. lambda 함수를 활용합니다.

# 점수가 높은 순(내림차순)으로 정렬
# x[1]은 딕셔너리의 (Key, Value) 튜플에서 1번 인덱스인 Value를 의미합니다.
sorted_by_score = sorted(scores.items(), key=lambda x: x[1], reverse=True)

print(sorted_by_score)
# 출력: [('영희', 90), ('철수', 85), ('민수', 75)]

2. 딕셔너리 컴프리헨션 (Dictionary Comprehension)

리스트 컴프리헨션처럼, 딕셔너리도 한 줄로 새롭게 생성하거나 필터링할 수 있습니다.

📌 예제 1: 기존 데이터를 가공해서 만들기

모든 학생의 점수에 가산점 5점을 더한 새로운 딕셔너리를 만든다면?

# { Key: Value for 반복문 }
plus_scores = {name: score + 5 for name, score in scores.items()}
print(plus_scores) 
# {'철수': 90, '영희': 95, '민수': 80}

📌 예제 2: 특정 조건으로 필터링하기

80점 이상인 '우수 학생'만 따로 골라내고 싶다면?

# 뒤에 if 조건을 붙여줍니다.
top_students = {name: score for name, score in scores.items() if score >= 80}
print(top_students) 
# {'철수': 85, '영희': 90}

3. 실전 팁: Key와 Value 뒤집기

데이터를 찾다 보면 가끔 "점수를 넣으면 이름이 나오게" 구조를 바꿔야 할 때가 있습니다.

# { Value: Key for Key, Value in 딕셔너리.items() }
reverse_scores = {v: k for k, v in scores.items()}

print(reverse_scores)
# {85: '철수', 90: '영희', 75: '민수'}

📝 요약

  1. 정렬: sorted(scores.items(), key=lambda x: x[1]) 공식을 외워두면 점수/가격순 정렬이 아주 쉬워집니다.
  2. 컴프리헨션: 대량의 딕셔너리 데이터를 정제할 때 if문과 함께 사용하면 코드가 획기적으로 줄어듭니다.
  3. 순서 유지: 파이썬 3.7부터는 딕셔너리에 데이터를 넣은 순서가 기본적으로 유지되므로 안심하고 사용하세요!

 

반응형
Comments