정렬하는 기준 재설정
조회수 399회
일반적으로 0<1<2<3<4<5<6<7<8<9 라는 기준을 가지고 정렬이 되는데,
1<2<3<4<5<6<7<8<9<0 이라는 기준으로 정렬을 하고 싶습니다.
C++에서 대소비교 연산자를 아예 재정의하는 방법으로 했었던 기억이 있는데,
python에서 비슷한 기능을 하거나, 다른 쉬운 방법으로라도 정렬기준을 바꿀 수 있는게 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
커스텀 비교함수를 만들어서 비교하면 됩니다.
import random import functools def _compare(x, y): if x == 0: return 1 elif y == 0: return -1 elif x < y: return -1 else: return 0 L = list(range(10)) random.shuffle(L) print(f'target: {L}') print('sorted: {}'.format(sorted(L, key=functools.cmp_to_key(_compare)))) target: [3, 6, 0, 4, 9, 8, 5, 1, 2, 7] sorted: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
댓글 입력