반응형
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
- 단위테스트
- Eclipse
- 정규식
- 스프링부트
- string
- list
- vscode
- ArrayList
- 문자열
- Visual Studio Code
- junit
- 배열
- java테스트
- 인텔리제이
- javascript
- Array
- Java
- js
- SpringBoot
- IntelliJ
- 테스트자동화
- CSS
- input
- html
- 자바
- 자바스크립트
- math
- HashMap
- junit5
- 자바문법
Archives
- Today
- Total
어제 오늘 내일
[Python 실전] "딕셔너리 고수되는 법" 정렬과 컴프리헨션 완벽 마스터 본문
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: '민수'}
📝 요약
- 정렬:
sorted(scores.items(), key=lambda x: x[1])공식을 외워두면 점수/가격순 정렬이 아주 쉬워집니다. - 컴프리헨션: 대량의 딕셔너리 데이터를 정제할 때
if문과 함께 사용하면 코드가 획기적으로 줄어듭니다. - 순서 유지: 파이썬 3.7부터는 딕셔너리에 데이터를 넣은 순서가 기본적으로 유지되므로 안심하고 사용하세요!
반응형
'IT > Python' 카테고리의 다른 글
| [Python 실전] "KeyError는 이제 안녕!" 딕셔너리 안전 삭제 및 병합 가이드 (0) | 2026.06.04 |
|---|---|
| [Python 기초] 딕셔너리(Dictionary) 완벽 가이드 (0) | 2026.05.26 |
| [Python 기초] "리스트를 하나의 글로!" 파이썬 리스트 문자열 변환 (0) | 2026.05.25 |
| [Python 실전] "가로 세로 싹 다 더해라!" 2차원 리스트 합계와 평균 구하기 (0) | 2026.05.25 |
| [Python 실전] "좌표를 찍어라!" 2차원 리스트 데이터 위치 찾기 (0) | 2026.05.25 |
Comments
