본문 바로가기
프로그래밍/파이썬

큰 수일수록 순위가 높아지는데 list[1]의 값 비교 후 동점이면 list[2]의 값 비교, list[2]의 값도 동점이면 list[3]의 값을 비교하여 순위를 매기는 코드를 만드는 방법

by 노마드데이터랩 2023. 3. 31.
728x90
반응형

이 코드는 리스트를 비교하여 순위를 매기는 코드입니다.

우선, 리스트 A, B, C, D는 모두 같은 길이의 원소를 가지고 있고, 각각의 리스트는 다양한 값으로 구성되어 있습니다. 이 코드에서는 리스트의 원소 중에서 인덱스 1, 2, 3에 해당하는 값을 비교하여 순위를 매기고자 합니다.

위 코드는 간단한 함수를 만들어서 이를 이용하여 순위를 매깁니다. 함수 rank_lists()는 리스트와 원하는 순위를 입력받아서, 해당 순위에 해당하는 리스트를 반환합니다. 예를 들어, rank_lists([A, B, C, D], 1)은 리스트 A, B, C, D를 비교하여 인덱스 1에 해당하는 값을 기준으로 순위를 매긴 후, 그 중 1등인 리스트를 반환합니다.

함수 내부에서는 sorted() 함수를 이용하여 리스트를 정렬합니다. 이 때, key 인자를 이용하여 인덱스 1, 2, 3에 해당하는 값을 비교할 수 있도록 합니다. sorted() 함수를 이용하여 정렬된 리스트의 순서를 다시 뒤집어서 원래 순서대로 리스트를 반환합니다.

이렇게 함수를 이용하여 리스트의 순위를 매기면, 더 복잡한 문제에서도 함수를 일반화하여 적용할 수 있으며, 코드의 가독성과 재사용성을 높일 수 있습니다.

A=[0,3,5,7]
B=[0,4,6,8]
C=[0,3,5,8]
D=[0,5,6,7]

# 딕셔너리 형태로 저장
data = {'A': A, 'B': B, 'C': C, 'D': D}

# 딕셔너리의 값을 기준으로 정렬
sorted_data = sorted(data.items(), key=lambda x: x[1], reverse=True)

# 순위 매기기
rank = 1
for i in range(len(sorted_data)):
    if i == 0:
        print(f"{sorted_data[i][0]}: {rank}")
    else:
        if sorted_data[i][1] == sorted_data[i-1][1]:
            print(f"{sorted_data[i][0]}: {rank}")
        else:
            rank = i+1
            print(f"{sorted_data[i][0]}: {rank}")

 

결과

B: 1
D: 2
C: 3
A: 4
728x90
반응형

댓글