250x250
반응형
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 | 31 |
Tags
- Airflow
- airflow subdag
- gather_nd
- grad-cam
- 상관관계
- Counterfactual Explanations
- API Gateway
- API
- spark udf
- BigQuery
- integrated gradient
- correlation
- Retry
- top_k
- UDF
- GCP
- XAI
- TensorFlow
- 유튜브 API
- 공분산
- login crawling
- GenericGBQException
- requests
- hadoop
- tensorflow text
- youtube data
- session 유지
- subdag
- flask
- chatGPT
Archives
- Today
- Total
데이터과학 삼학년
리스트 정렬 (multiple key를 이용한 정렬) 본문
반응형
파이썬 리스트에서 멀티플한 key로 정렬하는 방법에 대해 알아본다
lambda를 이용해 여러 키를 tuple로 받게 해주면 된다.
즉, tuple의 순서에 따라 순서대로 정렬 된다.
s = [
[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]
]
#1번 인덱스 오름차순, 0번 인덱스로 오름차순 정렬
s = sorted(s, key = lambda x: (x[1], x[3]))
print(s)
[
[2, 'short', 'red', 9],
[12, 'tall', 'blue', 1],
[4, 'tall', 'blue', 13]
]
#1번 인덱스 오름차순, 3번 인덱스로 내림차순 정렬
s = sorted(s, key = lambda x: (x[1], -x[3]))
print(s)
[
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13],
[12, 'tall', 'blue', 1]
]
멀티플 키를 이용한 정렬 문제 예시
문제 설명복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요.
|
def solution(weights, head2head):
answer, win_rate, win_cnt_weight = [], [], []
cnt, temp_win_cnt = 0, 0
for i,j in zip(weights, head2head):
temp_j = j.replace("N","")
if temp_j == "":
win_rate.append(0)
else:
win_rate.append(temp_j.count('W') / len(temp_j))
for ind, win_result in enumerate(j):
if win_result == "W":
if weights[cnt] < weights[ind]:
temp_win_cnt += 1
win_cnt_weight.append(temp_win_cnt)
temp_win_cnt = 0
cnt += 1
sort_key = [(ind+1, k[0],k[1],k[2]) for ind, k in enumerate(zip(win_rate, win_cnt_weight,weights))]
sort_key.sort(key=lambda x:(-x[1],-x[2],-x[3],x[0]))
print('sort_key:', sort_key)
return [i[0] for i in sort_key]
weights, head2head, result = [50,82,75,120],["NLWL","WNLL","LWNW","WWLN"],[3,4,1,2]
solution(weights, head2head)
# sort_key: [(3, 0.6666666666666666, 2, 75), (4, 0.6666666666666666, 0, 120), (1, 0.3333333333333333, 1, 50), (2, 0.3333333333333333, 0, 82)]
# [3, 4, 1, 2]
728x90
반응형
LIST
'Python' 카테고리의 다른 글
파이썬 패키지 개념 (feat. 코딩도장) (0) | 2021.11.15 |
---|---|
에라토스테네스의 체 (소수 구하기) (0) | 2021.10.20 |
First-class function (일급함수) (0) | 2021.09.15 |
f-string escape string (중괄호를 나오게 하려면) (0) | 2021.06.17 |
클래스를 이용하여 데커레이터 만들기 (0) | 2021.04.15 |
Comments