operator 모듈은 내장 연산자에 대응하는 함수들을 제공해,
파이썬의 변수나 값의 연산 및 처리에 사용된다.
예를 들면, x + y 를 operator.add(x, y) 로 표현하는 방식으로 사용한다.
이 모듈은 연산자를 함수처럼 다룰 수 있어 sorted() 나 map() 같은 고차 함수의 인자로 활용할 때 특히 유용하다. 대표적인 예시로는 이런 것들이 있다.
변수나 값의 연산 및 처리에 사용되는 모듈함수 답게
튜플, 리스트, 딕셔너리 등 두 가지 이상의 요소가 있는 자료형에서 특정 속성(인덱스나 키)을 가져와 연산에 사용한다.
getitem() 메서드를 사용해 딕셔너리, 튜플 등 피연산자에서 특정 인덱스 또는 키의 값을 추출하는 호출 가능한 객체를 반환가능
from operator import itemgetter
# 1. 문자열 + 인덱스 1개
itemgetter(1)('ABCDEFG') # 결과: 'B'
# 2. 문자열 + 인덱스 여러 개 (튜플 반환)
itemgetter(1, 3, 5)('ABCDEFG') # 결과: ('B', 'D', 'F')
# 3. 문자열 + 슬라이스 객체 (slice(start, end))
itemgetter(slice(2, None))('ABCDEFG') # 결과: 'CDEFG' (index 2부터 끝까지)
# 4. 딕셔너리 + Key
soldier = dict(rank='captain', name='dotterbart')
itemgetter('rank')(soldier) # 결과: 'captain'
from operator import itemgetter
inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
getcount = itemgetter(1) # 각 튜플의 1번째 값(숫자)을 추출
list(map(getcount, inventory)) # [3, 2, 5, 1]
# 1번째 값(숫자) 기준 오름차순 정렬
sorted(inventory, key=getcount)
# [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]