일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- html
- pythongui
- 엑셀
- 비주얼베이직
- git
- 안드로이드
- 파워포인트
- 윈도우11
- VBA
- 파이썬
- Excel
- Windows10
- office
- Windows11
- 윈도우10
- Android
- matlab
- python3
- 문자열
- 깃
- 파이썬GUI
- 오피스
- pyqt5
- 파이썬3
- python
- win32com
- Outlook
- pandas
- windows
- 아웃룩
Appia의 IT세상
파이썬[Python] namedtuple - collections 모듈 본문
이번 포스팅은 collection 모듈에 대해서 조금 더 알아보도록 하겠습니다. 이 전에 counter()라는 함수를 알아봤었습니다. 이번에는 클래스와 매우 유사하지만, 조금 더 쉽게 빠르게 만들 수 있는 namedtuple이라는 부분에 대해서 살펴보도록 하겠습니다.
보틍 튜플의 경우, 인덱스를 통해서 접근이 가능합니다. 하지만, namedtuple의 경우 키 값을 통해서 접근이 가능합니다. 마치 class/딕셔너리와 유사하다고 봐야 합니다.
namedtuple(typename, field_names, verbose = False, rename = False)
namedtuple의 경우 이와 같은 형태를 가지고 있습니다. 그럼 이를 바탕으로 생성하는 부분을 한번 살펴보도록 하겠습니다.
example)
import collections point = collections.namedtuple('ClassSig',['signal','message']) example = point('Signal1','Message1') print(example) | cs |
result)
ClassSig(signal='Signal1', message='Message1') | cs |
위와 같이 namedtuple을 치환받은 변수를 바탕으로 namedtuple를 생성할 수 있습니다. 꼭 Class를 생성하는 느낌을 받습니다.
그럼 관련된 method들에 대해서 살펴보도록 하겠습니다.
Method | Describe |
_make(iterable) | 리스트 등을 이용한 데이터 시쿼스 기반의 데이터 값을 이용하여 만들 때 사용 |
_asdict() | field와 그에 상응하는 값 반환 |
_replace() | 특정 field의 value 변경시 사용 |
_fields | field에 대한 정보 표시 |
_field_defaults | 각 필드에 대한 default 값 리턴 |
그럼 위의 메소드 들에 대해서 한번 살펴보겠습니다.
example)
import collections point = collections.namedtuple('ClassSig',['signal','message',],defaults = [1]) sampleL = ['Signal1','Message1'] example = point._make(sampleL) print("example : _asdict()") print(example._asdict()) print("example : _replace()") print(example._replace(signal='Signal2')) print("example : _fields") print(example._fields) print("example : _fields_defaults") print(example._fields_defaults) | cs |
result)
example : _asdict() {'signal': 'Signal1', 'message': 'Message1'} example : _replace() ClassSig(signal='Signal2', message='Message1') example : _fields ('signal', 'message') example : _fields_defaults {'message': 1} | cs |
딕셔너리를 namedtuple로 변경하기
위와 같이 간단한 예제를 통해서 한번 살펴봤습니다. 그럼 좀 더 다른 이야기를 해볼까 합니다. 즉 namedtuple과 비슷한 딕셔너리를 이와 같은 namedtuple로 변경하는 방법에 대해서 살펴보겠습니다. 그럼 바로 예제를 통해서 살펴보겠습니다.
example)
import collections point = collections.namedtuple('ClassSig',['signal','message',],defaults = [1]) sampleL = {'signal':'Signal1','message':'Message1'} example = point(**sampleL) print(example) | cs |
result)
ClassSig(signal='Signal1', message='Message1') | cs |
단 주의하실 점은 딕셔너리(Dictionary)의 키값과 namedtuple의 키 값이 마져야 합니다. 그렇지 않을 경우 생성이 되지 않습니다.
파이썬[Python] Counter 함수 - collection 모듈 / 알파벳 사용빈도 확인
오늘은 간단하게 collection모듈에서의 namedtuple에 대해서 살펴봤습니다. 혹시 counter()에 관련된 부분에 대해서 궁금하시다면 위의 링크를 참조해주시길 바랍니다. 혹 궁금하신점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다.
'Python > Python 기본' 카테고리의 다른 글
파이썬[Python] 개발환경(IDE) Pycharm (파이참)설치하기 (0) | 2020.04.14 |
---|---|
파이썬[Python] deque - collections 모듈 (1) | 2020.04.08 |
파이썬[Python] PyAutogui 설치, 사용법(매크로/Macro 제작에 사용됨) (0) | 2020.03.23 |
파이썬[Python] Counter 함수 - collections 모듈 / 알파벳 사용빈도 확인 (0) | 2020.03.12 |
파이썬[Python] 012 클래스(Class) 및 상속 (0) | 2019.12.27 |