파이썬에서 다른 목록 목록 wrt 목록 정렬

무하마드 우스만 아리프

두 목록의 목록이 있는데, 두 번째 목록에 대해 첫 번째 목록을 정렬하고 싶습니다. 예를 들어 여기에 두 가지가 있습니다.

old = [[1, 7, 3, 2, 5, 4, 6, 0, 8, 9], 
       [7, 3, 2, 5, 4, 6, 1, 8, 0, 9], 
       [9, 2, 8, 7, 1, 5, 0, 4, 6, 3]]
new = [[4, 1, 5, 6, 7, 9, 10, 11, 8, 2, 3, 0], 
       [10, 6, 4, 3, 0, 11, 2, 5, 8, 1, 9, 7], 
       [0, 1, 7, 10, 9, 6, 4, 5, 8, 2, 3, 11]]

new목록 목록과 목록 목록 을 정렬하고 싶습니다 old. 새 항목의 경우 항목이

sorted_new = [[1, 7, 3, 2, 5, 4, 6, 0, 8, 9, 10, 11], 
              [7, 3, 2, 5, 4, 6, 1, 8, 0, 9, 10, 11], 
              [9, 2, 8, 7, 1, 5, 0, 4, 6, 3, 10, 11]]

유의해야 할 중요한 점은 일치 할 두 목록의 크기가 같지 않다는 것입니다. 이것을 어떻게 얻을 수 있습니까?

빌렘 반 온셈

다음 접근 방식을 사용할 수 있습니다.

sorted_new = []
for sub_new,sub_old in zip(new,old):
    old_idx = {k:v for v,k in enumerate(sub_old)}
    sorted_new.append(sorted(sub_new,key=lambda x:old_idx.get(x,len(sub_old))))

그러면 다음이 생성됩니다.

>>> sorted_new
[[1, 7, 3, 2, 5, 4, 6, 0, 8, 9, 10, 11], [7, 3, 2, 5, 4, 6, 1, 8, 0, 9, 10, 11], [9, 2, 8, 7, 1, 5, 0, 4, 6, 3, 10, 11]]

코드는 다음과 같이 작동합니다. 먼저 두 목록 newold동시에 실행합니다. 그러한 모든 쌍의 목록에 대해. 먼저 의 요소를 목록의 해당 색인에 매핑하는 사전 이해를 사용하여 사전을 생성 sub_old합니다.

다음으로 우리는 sub_new. 그 요소가있는 경우 sub_newold_idx, 우리는 인덱스를 돌려줍니다 (이 이렇게 정렬 키)입니다. 그렇지 않은 경우 기본을 반환 len(sub_old)하므로 사전에있는 모든 인덱스보다 큽니다. 결과적으로 해당 요소는 목록의 오른쪽에 배치됩니다.

Python의 정렬 기능은 안정적 이므로.에없는 요소 old는 원래 순서를 유지합니다.

우리는 list.index(..)그러한 인덱스 사전을 구성하는 대신 메서드에 마법을 사용할 수있었습니다 . 그러나 문제 .index(..)O (n) 에서 실행된다는 것 입니다. 따라서이 알고리즘 만들 것이다 O (m × N N 로그) 와, 각 서브리스트에 대한 m 요소의 수 oldN 의 요소 수를 new.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

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

분류에서Dev

파이썬에서 특정 길이로 목록 목록을 다른 목록 목록과 결합

분류에서Dev

2 개의 다른 목록에 따라 2 개의 파이썬 목록 정렬

분류에서Dev

다른 목록의 순서에 따라 목록 정렬

분류에서Dev

다른 목록에서 json 목록 정렬

분류에서Dev

C # 다른 목록의 값에서 목록 정렬

분류에서Dev

다른 목록에서 찾은 값으로 목록 정렬 C #

분류에서Dev

Python : 길이가 다른 내부 목록이있는 목록 목록 정렬?

분류에서Dev

다른 목록 값에 따라 목록의 색인 값 정렬

분류에서Dev

파이썬에서 목록 정렬

분류에서Dev

파이썬에서 목록 정렬

분류에서Dev

파이썬에서 목록 정렬

분류에서Dev

파이썬에서 목록 정렬

분류에서Dev

파이썬 그룹별로 다른 목록으로 목록 정렬

분류에서Dev

파이썬에서 튜플 목록의 다단계 정렬

분류에서Dev

파이썬의 다른 하위 목록에서 해당 가중치에 따라 하위 목록 정렬

분류에서Dev

다른 목록에서 가장 일치하는 항목으로 목록 정렬

분류에서Dev

파이썬의 다른 목록에서 전체 목록 삭제

분류에서Dev

다른 목록에서 파이썬 삭제 목록

분류에서Dev

목록 목록에서 요소 정렬

분류에서Dev

Python에서 목록 내 목록 정렬

분류에서Dev

다른 데이터 유형으로 Python에서 목록 목록 정렬

분류에서Dev

R의 목록 목록에서 계층 다시 정렬

분류에서Dev

길이가 고르지 않은 다른 목록에 따라 목록 정렬

분류에서Dev

다른 목록에 따른 파이썬 합계 목록 요소

분류에서Dev

tcl : 배열에 따른 정렬 목록

분류에서Dev

다른 목록의 정렬을 기반으로 목록에 변형 적용

분류에서Dev

다른 목록 끝에 목록 추가

분류에서Dev

다른 목록에 목록 추가

Related 관련 기사

  1. 1

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

  2. 2

    파이썬에서 특정 길이로 목록 목록을 다른 목록 목록과 결합

  3. 3

    2 개의 다른 목록에 따라 2 개의 파이썬 목록 정렬

  4. 4

    다른 목록의 순서에 따라 목록 정렬

  5. 5

    다른 목록에서 json 목록 정렬

  6. 6

    C # 다른 목록의 값에서 목록 정렬

  7. 7

    다른 목록에서 찾은 값으로 목록 정렬 C #

  8. 8

    Python : 길이가 다른 내부 목록이있는 목록 목록 정렬?

  9. 9

    다른 목록 값에 따라 목록의 색인 값 정렬

  10. 10

    파이썬에서 목록 정렬

  11. 11

    파이썬에서 목록 정렬

  12. 12

    파이썬에서 목록 정렬

  13. 13

    파이썬에서 목록 정렬

  14. 14

    파이썬 그룹별로 다른 목록으로 목록 정렬

  15. 15

    파이썬에서 튜플 목록의 다단계 정렬

  16. 16

    파이썬의 다른 하위 목록에서 해당 가중치에 따라 하위 목록 정렬

  17. 17

    다른 목록에서 가장 일치하는 항목으로 목록 정렬

  18. 18

    파이썬의 다른 목록에서 전체 목록 삭제

  19. 19

    다른 목록에서 파이썬 삭제 목록

  20. 20

    목록 목록에서 요소 정렬

  21. 21

    Python에서 목록 내 목록 정렬

  22. 22

    다른 데이터 유형으로 Python에서 목록 목록 정렬

  23. 23

    R의 목록 목록에서 계층 다시 정렬

  24. 24

    길이가 고르지 않은 다른 목록에 따라 목록 정렬

  25. 25

    다른 목록에 따른 파이썬 합계 목록 요소

  26. 26

    tcl : 배열에 따른 정렬 목록

  27. 27

    다른 목록의 정렬을 기반으로 목록에 변형 적용

  28. 28

    다른 목록 끝에 목록 추가

  29. 29

    다른 목록에 목록 추가

뜨겁다태그

보관