반응형

python, 정렬 sort(), sorted() 예제

 

# 리스트 정렬 sort()
data = [3, 5, 2, 1, 8, 6, 10, 9, 4, 7]
data.sort()
print(data)

# 리스트 정렬 sorted()
data = [3, 5, 2, 1, 8, 6, 10, 9, 4, 7]
data2 = sorted(data)
print(data2)

# 튜플 정렬 sorted()
data = (3, 5, 2, 1, 8, 6, 10, 9, 4, 7)
data2 = tuple(sorted(data))
print(data2)

# 문자열 정렬 sorted()
data = "korea"
data = "".join(sorted(data))
print(data)

# 집합 정렬은 불가능. 그렇지만 리스트 같은 형태로 정렬하여 출력 가능
data = {3, 5, 2, 1, 8, 6, 10, 9, 4, 7}
data2 = sorted(data)
print(data2)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 사전 key 기준 정렬
scores = {"홍길동": 80, "김철수": 75, "이영자": 85, "하리수": 90}

scores = sorted(scores.items())
print(scores)  # [('김철수', 75), ('이영자', 85), ('하리수', 90), ('홍길동', 80)]

scores = dict(scores)
print(scores)  # {'김철수': 75, '이영자': 85, '하리수': 90, '홍길동': 80}


# 사전 value 기준 정렬
scores = {"홍길동": 80, "김철수": 75, "이영자": 85, "하리수": 90}

def f(kv):
  return kv[1]

scores = sorted(scores.items(), key=f)
print(scores)  # [('김철수', 75), ('홍길동', 80), ('이영자', 85), ('하리수', 90)]

scores = dict(scores)
print(scores)  # {'김철수': 75, '홍길동': 80, '이영자': 85, '하리수': 90}

# 사전 value 기준 정렬 (key에 함수 이름 전달)
scores = {"홍길동": 80, "김철수": 75, "이영자": 85, "하리수": 90}

def f(v):
  return v[1]

scores = sorted(scores.items(), key=f)
print(scores)  # [('김철수', 75), ('홍길동', 80), ('이영자', 85), ('하리수', 90)]

scores = dict(scores)
print(scores)  # {'김철수': 75, '홍길동': 80, '이영자': 85, '하리수': 90}

# 사전 value 기준 정렬 (key에 람다 함수 이용)
scores = {"홍길동": 80, "김철수": 75, "이영자": 85, "하리수": 90}

scores = sorted(scores.items(), key=lambda v: v[1])
print(scores)  # [('김철수', 75), ('홍길동', 80), ('이영자', 85), ('하리수', 90)]

scores = dict(scores)
print(scores)  # {'김철수': 75, '홍길동': 80, '이영자': 85, '하리수': 90}

# 2차원 리스트 정렬하기, 아이템의 첫 번째 기준 정렬
data = [[2, '이철수', 80], [3, '수알치', 90], [1, '홍길동', 70]]
data2 = sorted(data)
print(data2)  # [[1, '홍길동', 70], [2, '이철수', 80], [3, '수알치', 90]]

# 2차원 리스트 정렬하기, 아이템의 두 번째 기준 정렬
data = [[2, '이철수', 80], [3, '수알치', 90], [1, '홍길동', 70]]
data2 = sorted(data, key=lambda v: v[1])
print(data2)  # [[3, '수알치', 90], [2, '이철수', 80], [1, '홍길동', 70]]

# 2차원 리스트 정렬하기, 아이템의 세 번째 기준, 역순 정렬 
data = [[2, '이철수', 80], [3, '수알치', 90], [1, '홍길동', 70]]
data2 = sorted(data, key=lambda v: v[2], reverse=True)
print(data2)  # [[3, '수알치', 90], [2, '이철수', 80], [1, '홍길동', 70]]

 

반응형

+ Recent posts