적용 예시:
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']
>>> 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
>>> from 연산자 가져오기 itemgetter
>> sorted_pb = sorted(phonebook.iteritems(),key=itemgetter (1))
>>> sorted_pb
[('Carol', '5834'), ('Linda', '7750'), ('Bob', '9345')]
>>> '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']]
... '장': ['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])]
... {"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}]
> ;>>