python 복합 조건에서의 사전 정렬
대충 훑어보니, 나는 즉시 이 견해를 인정할 수 없다는 것을 나타냈다.이 글의 저자는 경험이 풍부한 전문가로서 파이썬 해석기가 사전 저장과 검색을 어떻게 실현하는지에 대해 깊은 이해를 가지고 있어야 한다.그러나 그는 논리적으로 사전은 데이터의 무질서한 집합이고 키 검색에만 의존하는 뚜렷한 상식적 오류를 범했다.우리는 사전이 무질서하다고 말한다. 사전이 물리적 실체에서 실현될 때 정말 무질서하다는 것이 아니라 그 순서가 사용자에게 명확한 정의가 없어서 데이터의 특성으로 사용할 수 없다는 것을 말한다.위에서 말한 사전의 질서를 아는 것은 사전이 물리적 실체에서 실현될 때의 질서를 가리키는 것이지 논리적인 질서가 아니다.
기왕 사전이 무질서한 바에야 왜 아직도 사전의 정렬에 대해 그렇게 많은 화제를 토론합니까?사실,Py2시대에는 질서사전(orderdict)이 존재했지만, 질서사전은 우리가 토론한 사전과 같은 일이 아니다.이른바 사전 정렬이란 실질적으로 정렬 규칙에 따라 사전의 키를 정렬하여 얻은 정렬 결과는 하나의 목록이다.
우리는 하나의 예로 사전의 정렬을 보여 드리겠습니다. 로스터는 학생 정보를 저장하는 사전입니다. 여학생 우선, 저학년 이전, 총 성적에 따라 높은 것부터 끝까지 정렬하십시오.만약 전체 성적이 같다면 국어, 수학, 영어 성적을 순서대로 비교하고 높은 사람은 앞에 있다.
roster = {
' ': {' ':' ', ' ':3, ' ':98, ' ':95, ' ':100},
' ': {' ':' ', ' ':5, ' ':95, ' ':100, ' ':97},
' ': {' ':' ', ' ':2, ' ':100, ' ':99, ' ':100},
' ': {' ':' ', ' ':3, ' ':98, ' ':92, ' ':90},
' ': {' ':' ', ' ':5, ' ':97, ' ':95, ' ':100}
}
Python에서 가장 자주 사용하는 정렬 함수는sorted () 입니다. 우리는sorted () 로 이 정렬을 실현합니다.만약 한 번에 복합 정렬 조건을 쓴다면, 일정한 난이도가 있다.우리는 번잡함을 간소화하여 한 걸음 한 걸음 실현한다.1. 총성적 비교
>>> sorted(roster, key=lambda name:roster[name][' ']+roster[name][' ']+roster[name][' '])
[' ', ' ', ' ', ' ', ' ']
문제가 없을 것 같지만sorted는 기본적으로 오름차순이며, 총 성적이 높음에서 끝까지 정렬되면reverse=True라는 매개 변수를 사용합니다.
>>> sorted(roster, key=lambda name:roster[name][' ']+roster[name][' ']+roster[name][' '], reverse=True)
[' ', ' ', ' ', ' ', ' ']
2. 여학생 우선, 저학년 앞의 두 가지 조건 정렬을 시도한다
lambda 함수에서 정렬 항목을 병렬적으로 쓰면sorted () 는 자동으로 조건에 맞는 정렬을 실현합니다.여기서 성별 정렬의 조건은'성별'=='남'으로 여자에게 결과는 False(0), 남자보다 작은 True(1)로 자연히 앞선다.
>>> sorted(roster, key=lambda name:(roster[name][' ']==' ',roster[name][' ']))
[' ', ' ', ' ', ' ', ' ']
3. 최종 실현
단일 조건과 두 조건의 정렬을 시도한 후에 본 문제의 최종 요구를 실현하는 것은 매우 쉽다.그러나 성적 내림차순 배열은 성별과 학년 배열에 영향을 미치기 때문에 리버스 트루를 직접 사용할 수 없다.우리는 약간의 융통성을 가지고 최종 목적을 달성할 수 있다.
>>> sorted(roster, key=lambda name:(
roster[name][' ']==' ',
roster[name][' '],
300-roster[name][' ']-roster[name][' ']-roster[name][' '],
100-roster[name][' '],
100-roster[name][' '],
100-roster[name][' ']
))
[' ', ' ', ' ', ' ', ' ']
이python 복합 조건하의 사전 정렬에 관한 이 글은 여기까지 소개되었습니다. 더 많은 python 사전 정렬 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.