복붙노트

[PYTHON] 목록의 파이썬 정렬 목록 / 오름차순 및 내림차순

PYTHON

목록의 파이썬 정렬 목록 / 오름차순 및 내림차순

내가 이런 식으로 보이는 목록을 가지고 있다면 ...

['a',1] ['a',2] ['a',3] ['b',1] ['b',2] ['b',3]

요소 0을 내림차순으로 정렬하고 요소 1을 오름차순으로 정렬하여 결과가 어떻게 보이는지 정렬하려면 어떻게해야합니까?

['b',1] ['b',2] ['b',3] ['a',1] ['a',2] ['a',3]

itemgetter를 사용하면 엘레멘트 0에서 역으로 전달할 수 있지만 엘레멘트에 대비하여 엘레멘트를 사용하면 이전에 있던 엘레멘트를 폐지 할 수있다. 우선 내림차순으로 정렬 한 다음 오름차순으로 정렬해야하므로 결합 된 키를 사용할 수 없습니다.

TIA, PK

해결법

  1. ==============================

    1.

    L = [['a',1], ['a',2], ['a',3], ['b',1], ['b',2], ['b',3]]
    L.sort(key=lambda k: (k[0], -k[1]), reverse=True)
    

    L에 다음 내용이 포함되어 있습니다.

    [['b', 1], ['b', 2], ['b', 3], ['a', 1], ['a', 2], ['a', 3]]
    
  2. ==============================

    2.파이썬의 정렬이 안정적이어서 순차적으로 정렬을 수행 할 수 있습니다. 먼저 보조 키를 정렬해야합니다. 공식적인 방법 참조.

    파이썬의 정렬이 안정적이어서 순차적으로 정렬을 수행 할 수 있습니다. 먼저 보조 키를 정렬해야합니다. 공식적인 방법 참조.

    from operator import itemgetter
    l = [['a',2], ['a',1], ['b', 2], ['a',3], ['b',1], ['b',3]]
    l.sort(key=itemgetter(1))
    l.sort(key=itemgetter(0), reverse=True)
    # [['b', 1], ['b', 2], ['b', 3], ['a', 1], ['a', 2], ['a', 3]]
    
  3. ==============================

    3.좋아하는 것

    좋아하는 것

    def mycmp(a, b):
    
      res = cmp(a[0], b[0])
      if res == 0:
         return cmp(a[1], b[1])
      return res
    
    newlist = sorted(input_list, cmp=mycmp)
    

    비교 메소드는 먼저 각 요소의 첫 번째 항목을 확인합니다. 그것들이 동일하면 각 요소의 두 번째 항목을 검사합니다. 다른 정렬 동작을 구현하기 위해 mycmp () 구현 내부의 반환 값이 무효화 될 수 있습니다.

  4. from https://stackoverflow.com/questions/6666748/python-sort-list-of-lists-ascending-and-then-decending by cc-by-sa and MIT license