>  기사  >  백엔드 개발  >  Python은 공통 키로 사전 목록을 정렬합니다(itemgetter 함수 사용).

Python은 공통 키로 사전 목록을 정렬합니다(itemgetter 함수 사용).

不言
不言앞으로
2018-10-20 14:48:102510검색

이 기사의 내용은 Python이 공개 키를 기준으로 사전 목록을 정렬하는 내용입니다(itemgetter 함수 사용). 이는 특정 참조 값이 있으므로 도움이 필요한 친구에게 도움이 되기를 바랍니다.

1. 요구 사항

사전 목록이 있고 하나 이상의 사전에 있는 값을 기준으로 목록을 정렬하려고 합니다.

2. 솔루션

이러한 구조를 정렬하려면 연산자 모듈의 itemgetter 기능을 사용하는 것이 매우 간단합니다.

예:

from operator import itemgetter
rows=[
{'name':'mark','age':18,'uid':'110'},
{'name':'miaomiao','age':28,'uid':'150'},
{'name':'miaomiao','age':8,'uid':'150'},
{'name':'xiaohei','age':38,'uid':'130'},
]

rows_by_name=sorted(rows,key=itemgetter('name'))
rows_by_uid=sorted(rows,key=itemgetter('uid'))
print(rows_by_name)
print(rows_by_uid)


#itemgetter还支持多个键
rows_by_name_age=sorted(rows,key=itemgetter('name','age'))
print(rows_by_name_age)

#itemgetter同样适用min、max
print(min(rows,key=itemgetter('uid')))
print(max(rows,key=itemgetter('age')))

실행 결과:

[{'name': 'mark', 'age': 18, 'uid': '110'}, {'name': 'miaomiao', 'age': 28, 'uid': '150'}, {'name': 'miaomiao', 'age': 8, 'uid': '150'}, {'name': 'xiaohei', 'age': 38, 'uid': '130'}]
[{'name': 'mark', 'age': 18, 'uid': '110'}, {'name': 'xiaohei', 'age': 38, 'uid': '130'}, {'name': 'miaomiao', 'age': 28, 'uid': '150'}, {'name': 'miaomiao', 'age': 8, 'uid': '150'}]
[{'name': 'mark', 'age': 18, 'uid': '110'}, {'name': 'miaomiao', 'age': 8, 'uid': '150'}, {'name': 'miaomiao', 'age': 28, 'uid': '150'}, {'name': 'xiaohei', 'age': 38, 'uid': '130'}]
{'name': 'mark', 'age': 18, 'uid': '110'}
{'name': 'xiaohei', 'age': 38, 'uid': '130'}

Discussion

이 예에서 행은 내장 sorted() 함수로 전달됩니다. 이 함수는 호출 가능 개체(호출 가능)를 나타내야 하는 키워드 인수 키를 허용합니다. 이 객체는 행의 단일 요소를 입력으로 받아들이고 정렬 기준으로 사용되는 값을 반환합니다. itemgetter() 함수는 이러한 호출 가능 객체를 생성합니다.

operator.itemgetter() 함수에서 허용하는 매개변수는 행 레코드에서 필요한 값을 추출하기 위한 쿼리 표시로 사용될 수 있습니다. 이는 사전 키 이름, 숫자 목록 요소 또는 객체의 __getitem__() 메서드에 전달될 수 있는 모든 값일 수 있습니다. itemgetter()에 여러 태그를 전달하면 생성되는 콜러블은 모든 요소를 ​​포함하는 튜플을 반환하고 sorted()는 튜플의 정렬 결과에 따라 출력을 정렬합니다. 여러 필드를 동시에 정렬하려는 경우에 유용합니다.

때때로 람다 표현식이 itemgetter()의 함수를 대체하는 데 사용됩니다. 예:

rows_by_uid=sorted(rows,key=lambda r:r['uid'])
rows_by_name_age=sorted(rows,key=lambda r:(r['name','age']))

이 솔루션도 일반적으로 잘 작동합니다. 그러나 itemgetter()를 사용하면 일반적으로 더 빠르게 실행됩니다. 따라서 성능 문제를 고려해야 한다면 itemgetter()를 사용해야 합니다.

위 내용은 Python은 공통 키로 사전 목록을 정렬합니다(itemgetter 함수 사용).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제