- Python - 프로그래밍 시작하기
- Python 기초 (Basics)
- Python 변수 (Variables)
- Python 연산자 (Operators)
- Python 리스트 (List)
- Python 튜플 (Tuple)
- Python 문자열 (Strings)
- Python 집합 (Sets)
- Python 딕셔너리 (Dictionary)
- Python 흐름 제어 (Flow control)
- Python 함수 (Function)
- Python 클래스 (Class)
- Python 내장 함수 (Built-in function)
- Python 키워드 (Keyword)
- Keyword - and
- Keyword - as
- Keyword - assert
- Keyword - break
- Keyword - class
- Keyword - continue
- Keyword - def
- Keyword - del
- Keyword - elif
- Keyword - else
- Keyword - except
- Keyword - False
- Keyword - for
- Keyword - from
- Keyword - global
- Keyword - if
- Keyword - import
- Keyword - in
- Keyword - is
- Keyword - lambda
- Keyword - None
- Keyword - not
- Keyword - or
- Keyword - pass
- Keyword - return
- Keyword - True
- Keyword - try
- Keyword - while
- Python 파일 다루기
- Python datetime 모듈
- Python time 모듈
- Python collections.deque
- Python collections.namedtuple
- Python의 선 (Zen of Python)
- Python Tutorial
- NumPy Tutorial
- Matplotlib Tutorial
- PyQt5 Tutorial
- BeautifulSoup Tutorial
- xlrd/xlwt Tutorial
- Pillow Tutorial
- Googletrans Tutorial
- PyWin32 Tutorial
- PyAutoGUI Tutorial
- Pyperclip Tutorial
- TensorFlow Tutorial
- Tips and Examples
Python collections.namedtuple¶
namedtuple (네임드 튜플)은 말 그대로 이름을 가지는 튜플 자료형입니다.
namedtuple은 collections 모듈에 포함되어 있습니다.
튜플이 값들만을 가지는 반면 namedtuple은 딕셔너리와 같이 튜플의 각 요소들에 접근할 수 있는 키 (필드명)를 가질 수 있습니다.
딕셔너리와 다르게 namedtuple은 키와 인덱스 모두를 통해 값에 접근할 수 있습니다.
이 페이지에서는 namedtuple을 만들고, 값에 접근하거나 변경하는 방법에 대해 알아봅니다.
순서는 아래와 같습니다.
1. namedtuple 만들기¶
from collections import namedtuple
book = namedtuple('book', ['title', 'author', 'price'])
book01 = book('Book Title', 'Book Author', 20000)
print(type(book01))
print(book01)
<class '__main__.book'>
book(title='Book Title', author='Book Author', price=20000)
namedtuple은 collections.namedtuple()를 이용해서 만들어집니다.
namedtuple()의 첫번째 인자는 namedtuple의 타입명입니다. type(book01)을 출력해보면 첫번째 인자에서 지정한 ‘book’이 출력됩니다.
namedtuple()의 두번째 인자에는 필드명을 입력합니다. 필드명은 공백 또는 콤마로 구분된 문자열의 시퀀스 (리스트, 튜플)를 입력합니다.
필드명 입력에 대해서 아래의 코드를 참고하세요.
book = namedtuple('book', ['title', 'author', 'price']) # Correct
book = namedtuple('book', ('title', 'author', 'price')) # Correct
book = namedtuple('book', 'title author price') # Correct
book = namedtuple('book', ['title' 'author' 'price']) # Incorrect
book = namedtuple('book', 'title' 'author' 'price') # Incorrect
앞에 세 줄은 필드명이 적절하게 입력된 예시이고, 뒤에 두 개는 필드명이 잘못 입력된 예시입니다.
2. 키를 사용해서 접근하기¶
from collections import namedtuple
book = namedtuple('book', ['title', 'author', 'price'])
book01 = book('Book Title', 'Book Author', 20000)
print('Title:', book01.title)
print('Author:', book01.author)
print('Price:', book01.price)
print('Field Names:', book01._fields)
Title: Book Title
Author: Book Author
Price: 20000
Field Names: ('title', 'author', 'price')
딕셔너리와 유사하게 ‘title, ‘author’, ‘price’와 같은 키를 이용해서 값들에 접근할 수 있습니다.
_field
를 이용해서 키 (필드명)의 튜플을 얻을 수 있습니다.
3. 인덱스를 사용해서 접근하기¶
from collections import namedtuple
book = namedtuple('book', ['title', 'author', 'price'])
book01 = book('Book Title', 'Book Author', 20000)
print('Title:', book01[0])
print('Author:', book01[1])
print('Price:', book01[2])
print('Length:', len(book01))
Title: Book Title
Author: Book Author
Price: 20000
Length: 3
튜플과 유사하게 인덱스를 이용해서 값들에 접근할 수도 있습니다.
파이썬 내장함수 len()을 이용해서 namedtuple의 길이를 얻을 수 있습니다.
4. namedtuple 값 변경하기¶
from collections import namedtuple
book = namedtuple('book', ['title', 'author', 'price'])
book01 = book('Book Title', 'Book Author', 20000)
# book01.title = 'New Book Title' # Incorrect
book01_new = book01._replace(title='New Book Title')
print(book01_new.title)
print(book01_new.author)
print(book01_new.price)
New Book Title
Book Author
20000
namedtuple은 튜플과 같이 기본적으로 변경 불가능 (immutable)한 자료형입니다.
값을 변경해서 사용하기 위해서는 _replace()
를 이용합니다.
book01_new은 _replace()
를 이용해서 값을 변경한 namedtuple입니다.