>  기사  >  백엔드 개발  >  파이썬 정렬 sort() 및 sorted()

파이썬 정렬 sort() 및 sorted()

高洛峰
高洛峰원래의
2017-02-13 17:29:581589검색

적용 예시:

1. 알파벳 순으로 출력

2. 레코드 등 여러 필드 정렬

자주 사용하는 정렬 기능:

sort()

sorted()

비교:

1.sorted()의 적용 범위가 더 넓습니다

sorted(iterable[ , cmp[ , 키[, 역방향]]])

s.sorted([cmp[, 키[, 역방향]]])

예:

> >> ; 명 = [{'name':'Jon','age': 32}, {'name':'Alan','age': 50}, {'name': 'Bob', '나이 ':23 }]
>>> sorted(persons, key=lambda x: (x['name'], -x['age']))
[{'age': 50 , '이름': 'Alan'}, {'age': 23, 'name': 'Bob'}, {'age': 32, 'name': 'Jon'}]

sorted( )를 사용할 수 있습니다. 모든 반복 가능한 객체인 sort()는 일반적으로

>>> a = (1,2,4,2,3)
>>> a.sort( )
추적(가장 최근 호출 마지막):
파일 "", 첫 번째 줄,
AttributeError: 'tuple' 객체에 'sort' 속성이 없습니다.
> ;>> sorted(a)
[1, 2, 2, 3, 4]

2.sorted()는 정렬된 목록을 반환합니다. 원본 목록은 변경되지 않고 그대로 유지되며 sort()는 원본 목록을 직접 수정합니다.

sort()는 원본 목록을 복사할 필요가 없기 때문에 메모리를 덜 소비하고 더 효율적입니다.

>>> ',3, 7,'n']
>>> sorted(a)
[1, 3, 7, '1', 'a', 'n']
> >>a
['1', 1, 'a', 3, 7, 'n']
>>> a
[1, 3, 7, '1', 'a', 'n']

3. 매개변수 키가 매개변수 cmp보다 큽니다. 고효율. cmp에 의해 전달된 함수는 전체 정렬 프로세스 동안 여러 번 호출되며, 이는 비용이 많이 듭니다. 키는 각 요소에 대해 한 번만 처리됩니다.

>>> from timeit import Timer

>>> Timer(stmt="sorted(xs,key=lambda x:x[1])",setup="xs =range(100);xs=zip(xs,xs);").timeit(10000)
0.35391712188720703
>>> : cmp(a[1],b[1]))" ,setup="xs=range(100);xs=zip(xs,xs);").timeit(10000)
0.4931659698486328

4.sorted()는 정렬 가능 다양한 데이터 구조

사전:

전화번호부 전화번호를 숫자 크기별로 정렬

> ;>> 전화번호부 = {'Linda':'7750',' Bob':'9345','Carol':'5834'}

>>> from 연산자 가져오기 itemgetter
>> sorted_pb = sorted(phonebook.iteritems(),key=itemgetter (1))
>>> sorted_pb
[('Carol', '5834'), ('Linda', '7750'), ('Bob', '9345')]

다차원 목록:

등급 및 등급의 다중 필드 정렬

>>> from Operator Import itemgetter

>>> 'Bob',95.00,'A'],['Alan',86.0,'C'],['Mandy',82.5,'A'] ,['Rob',86,'E']]
>>> sorted(gameresult, key=itemgetter(2, 1))
[['Mandy', 82.5, 'A'] , ['Bob', 95.0, 'A'], ['Alan ', 86.0, 'C'], ['Rob', 86, 'E']]

사전의 혼합 목록:

>>> :['M',7],

... '장': ['E',2],
... '왕':['p',3],
.. . 'Du':['C',2]}
>>> from 연산자 import itemgetter
>>> ; sorted(mydict.iteritems(),key=lambda(k,v ):operator.itemgetter(1)(v))
[('Zhang', ['E', 2]), ('Du' , ['C', 2]), ('Wang', [ 'p', 3]), ('Li', ['M', 7])]

목록의 혼합 사전:

여러 키 값 정렬 ​​등급 및 이름

>>> gameresult = [{"name":"Bob","wins":10, "losses":3," rating":75.00},

... {"name":"David","wins":3,"loses":5,"rated":57.00}]
>>> from Operator import itemgetter
>> ;> sorted(gameresult,key=itemgetter("ating","name"))
[{'wins': 3, ' rating' : 57.0, 'name': 'David', 'loses': 5 }, {'승수': 10, '손실': 3, '이름': 'Bob', '등급': 75.0}]
> ;>>

더 많은 Python 정렬 정렬을 보려면 () 및 sorted() 관련 기사는 PHP 중국어 사이트를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.