[Python] 네임드 튜플 (namedtuple)
네임드 튜플을 사용하면
튜플을 인덱스와 key로 접근이 가능하다.

선언 방법
우선 namedtuple을 import하여 사용한다.
from collections import namedtuple
Dog = namedtuple('puppy', 'name age')
namedtuple의 첫번째 인자는 클래스 이름이 들어가고, 두번째 인자는 iterable객체 즉, 반복 가능한 객체가 들어간다.
iterable한 객체에는 list, dict, set, tuple, range, str 등이 있다.
이 외 선언방법은 아래와 같다.
Dog1 = namedtuple('puppy', 'name age') # 공백
Dog2 = namedtuple('puppy', 'name, age') # ,
Dog3 = namedtuple('puppy', ['name', 'age']) # 리스트
이 때 기본적으로 중복되는 키 이름이나, 예약어는 사용할 수 없다.
rename옵션을 사용해 이를 해결할 수 있다. (default = False)
Dog4 = namedtuple('puppy', 'name age name age age', rename=True)
Dog라는 namedtuple(puppy) 클래스를 만들었으니, 객체를 생성해보자.
dog = Dog('meme', 3)
# dog = Dog(name='meme', age=3)
print(Dog)
print(dog)

key값이 중복된 Dog4의 객체를 생성해보자.
dog4 = Dog4('meme', '3', 'coco', '2', '1')
print(dog4)

중복되는 키값은 '_인덱스'로 출력된다.
print(dog._asdict())
접근 방법
print(dog.name, dog[0])
print(dog.age, dog[1])

dog.name과 dog.age처럼 key를 통해 접근할 수 있으며, 인덱스로 접근할 수 있다.
(튜플 값이 무엇을 의미하는지 나타내는 것을 key라고 표현하는 것이다. 정확히 표현하자면 클래스 변수의 접근과 인덱스로 접근이 가능하다가 맞다.)
언팩킹
(언팩킹 지난글 참고 : https://sso-y.tistory.com/9)
[Python] 튜플(팩킹, 언팩킹)
선언 방법 , 팩킹 t = ('so', 'ye', 'on', '2') t2 = 's', ('so', 'ye', 'on', '2') ('s',) 튜플 선언에서 괄호 () 는 생략 가능 콤마(,) 만 있으면 됨! 원소가 하나일 때는 원소 마지막에 콤마(,) 를 붙이면 tuple 언팩킹
sso-y.tistory.com
사전형 자료를 언팩킹하여 네임드 튜플을 만들어보자.
dog_dic = {'name' : 'coco', 'age' : 2}
dog = Dog(**dog_dic)
print(dog)

dog_dic = {'name' : 'coco', 'age' : 2}
dog = Dog(*dog_dic)
print(dog)

*딕셔러니는 key값을 **딕셔너리는 value값을 가져온다!
네임드 튜플을 언팩킹 해보자.
dog = Dog(name='meme', age=3)
# 언팩킹
d = *dog
print(d)

'Python > 파이썬 중급' 카테고리의 다른 글
| [Python] map, filter 함수 (0) | 2022.12.07 |
|---|---|
| [Python] MappingProxyType (0) | 2022.12.07 |
| [Python] 매직 메소드 (0) | 2022.11.30 |
| [Python] 데코레이터 심화 (0) | 2022.11.29 |
| [Python] 인스턴스 메소드, 클래스 메소드, 정적(static) 메소드 (0) | 2022.11.29 |