사용자 정의 비교기로 파이썬 목록 정렬

이산 사후

아래 목록을 정렬하려고합니다.

points = [[1, 4, 'start'], [1, 6, 'start'], [2, 8, 'end'], [2, 5, 'end'], [3, 4, 'end'], [3, 9, 'start']]

예상 출력 :

[[1, 6, 'start'], [1, 4, 'start'], [2, 5, 'end'], [2, 8, 'end'], [3, 9, 'start'], [3, 4, 'end']]

정렬 조건은 다음과 같습니다.

  1. p1 [0] == p2 [0] 및 p1 [2] == 'start'및 p2 [2] == 'start'이면 더 큰 값을 가진 p1 [1] 또는 p2 [1]이 먼저 와야합니다.

  2. p1 [0] == p2 [0] 및 p1 [2] == 'end'및 p2 [2] == 'end'이면 더 작은 값을 가진 p1 [1] 또는 p2 [1]이 먼저 와야합니다.

  3. p1 [0] == p2 [0] 및 p1 [2] == 'start'및 p2 [2] == 'end'이면 'start'가있는 점이 먼저 와야합니다.

사용자 지정 비교기를 작성하려고했습니다 (정답을 얻음). 이것이 올바른 접근 방식인지 궁금합니다. 더 간단 할 수 있습니까?

def mycmp(p1, p2):
    if p1[0] < p2[0]:
        return -1

    if p1[0] == p2[0]:
        if p1[2] == 'start' and p2[2] == 'start' and p1[1] > p2[1]:
            return -1
        elif p1[2] == 'end' and p2[2] == 'end' and p1[1] < p2[1]:
            return -1
        elif p1[2] == 'start' and p2[2] == 'end':
            return -1
    return 0

points.sort(key=cmp_to_key(mycmp))
수 라즈 수 브라 마니아 어
points.sort(key = lambda x: (x[0], x[2] == 'end', -x[1] if x[2] == 'start' else x[1]))

를 사용할 수 있습니까? lambda핵심은 @Jack 덕분에 우선 순위를 지정하는 것입니다.

람다 함수 내에서 총 3 개의 키를 사용했습니다.

먼저에서 정렬합니다 x[0] in ascending order.

거기에 넥타이가 있으면 high priority to x[2] = end

그리고 마지막으로 정렬 x[1] in descending order if x[2]=start and ascending if x[2]=end

Logic is to specify your priorities in order inside the lambda function

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사용자 함수로 파이썬 목록 정렬. (오류)

분류에서Dev

사용자 정의 객체 목록 JSON이 파이썬으로 직렬화

분류에서Dev

날짜별로 목록의 파이썬 사전 정렬

분류에서Dev

파이썬에서 숫자로 문자열 목록 정렬

분류에서Dev

파이썬에서 문자열을 목록으로 정렬

분류에서Dev

mergesort 대 사용자 정의 정렬로 배열 목록 정렬

분류에서Dev

목록을 값으로 사용하여 파이썬 사전 정렬

분류에서Dev

파이썬에서 목록을 사용하여 목록 목록을 효율적으로 정렬하는 방법

분류에서Dev

파이썬 프로그램의 목록에서 정렬 기능?

분류에서Dev

알파벳순으로 제목을 비교하여 제목과 자막이있는 정렬 목록 정렬

분류에서Dev

파이썬 목록을 기준으로 다른 목록 정렬

분류에서Dev

기준을 사용하여 목록에서 파이썬 정렬 객체

분류에서Dev

길이를 기준으로 파이썬 목록을 정렬 한 다음 내용을 기준으로 정렬

분류에서Dev

키 정렬 목록을 기반으로 파이썬 정렬 목록

분류에서Dev

키 정렬 목록을 기반으로 파이썬 정렬 목록

분류에서Dev

자바 비교기를 사용하여 다른 목록 정렬 개체 목록

분류에서Dev

절대 차이의 빈도로 파이썬 목록 정렬

분류에서Dev

파이썬 사용자 지정 정렬 목록 1/2/3 /../ 9/10

분류에서Dev

사용자 정의 필드로 Hakyll 항목 목록 정렬

분류에서Dev

비교기없이 Java에서 경로 이름의 배열 목록 정렬

분류에서Dev

목록 파이썬 목록에서 특정 색인의 문자열 바꾸기

분류에서Dev

람다 함수를 사용하는 파이썬 정렬 목록

분류에서Dev

파이썬을 사용하여 숫자 목록에서 정렬 된 쌍 저장

분류에서Dev

버블 정렬을 사용하여 목록의 목록을 길이별로 정렬하기-Haskell

분류에서Dev

자바의 다른 목록과 비교 한 정렬 목록

분류에서Dev

파이썬에서 사용자 정의 json 정렬 순서 만들기

분류에서Dev

파이썬 단어의 모음 수를 기준으로 목록 정렬

분류에서Dev

파이썬은 튜플의 두 목록을 반복하고 tem 사이의 정수를 비교합니다.

분류에서Dev

파이썬에서 복잡한 문자열 목록 정렬

Related 관련 기사

  1. 1

    사용자 함수로 파이썬 목록 정렬. (오류)

  2. 2

    사용자 정의 객체 목록 JSON이 파이썬으로 직렬화

  3. 3

    날짜별로 목록의 파이썬 사전 정렬

  4. 4

    파이썬에서 숫자로 문자열 목록 정렬

  5. 5

    파이썬에서 문자열을 목록으로 정렬

  6. 6

    mergesort 대 사용자 정의 정렬로 배열 목록 정렬

  7. 7

    목록을 값으로 사용하여 파이썬 사전 정렬

  8. 8

    파이썬에서 목록을 사용하여 목록 목록을 효율적으로 정렬하는 방법

  9. 9

    파이썬 프로그램의 목록에서 정렬 기능?

  10. 10

    알파벳순으로 제목을 비교하여 제목과 자막이있는 정렬 목록 정렬

  11. 11

    파이썬 목록을 기준으로 다른 목록 정렬

  12. 12

    기준을 사용하여 목록에서 파이썬 정렬 객체

  13. 13

    길이를 기준으로 파이썬 목록을 정렬 한 다음 내용을 기준으로 정렬

  14. 14

    키 정렬 목록을 기반으로 파이썬 정렬 목록

  15. 15

    키 정렬 목록을 기반으로 파이썬 정렬 목록

  16. 16

    자바 비교기를 사용하여 다른 목록 정렬 개체 목록

  17. 17

    절대 차이의 빈도로 파이썬 목록 정렬

  18. 18

    파이썬 사용자 지정 정렬 목록 1/2/3 /../ 9/10

  19. 19

    사용자 정의 필드로 Hakyll 항목 목록 정렬

  20. 20

    비교기없이 Java에서 경로 이름의 배열 목록 정렬

  21. 21

    목록 파이썬 목록에서 특정 색인의 문자열 바꾸기

  22. 22

    람다 함수를 사용하는 파이썬 정렬 목록

  23. 23

    파이썬을 사용하여 숫자 목록에서 정렬 된 쌍 저장

  24. 24

    버블 정렬을 사용하여 목록의 목록을 길이별로 정렬하기-Haskell

  25. 25

    자바의 다른 목록과 비교 한 정렬 목록

  26. 26

    파이썬에서 사용자 정의 json 정렬 순서 만들기

  27. 27

    파이썬 단어의 모음 수를 기준으로 목록 정렬

  28. 28

    파이썬은 튜플의 두 목록을 반복하고 tem 사이의 정수를 비교합니다.

  29. 29

    파이썬에서 복잡한 문자열 목록 정렬

뜨겁다태그

보관