본문 바로가기

Python

collections 의 모듈 namedtuple (네임드튜플)

namedtuple 이란?

- 기존 tuple 이 가지는 값에 대한 접근성 및 (동일한 형태의) 튜플 반복 생성에 대한 불편함을 해소하는 모듈

 

장점 :

1) 값의 불변성을 가지는 튜플의 성격을 가지고 있음

2) 값에 대한 다양한 접근법을 가지고 있음

3) 클래스 객체처럼 사용가능

 

 

- 일반적인 튜플 사용법

# 일반적인튜플
pt1 = (1.0, 5.0)

print(pt1[0] + pt1[1])

- namedtuple 사용법

from collections import namedtuple

# 선언 및 생성방법1
# 첫번째 인자는 관례상 변수명과 동일하게 생성
Point1 = namedtuple('Point', ['x', 'y'])
p1 = Point1(x=10, y=35)

# 선언방법2
Point2 = namedtuple('Point', 'x,y')
p2 = Point2(20, 40)

# 선언방법3
Point3 = namedtuple('Point', 'xy')
temp_dict = {'x': 75, 'y': 55}
p3 = Point3(45, y=20) # 또는 p5 = Point3(**temp_dict)

# 선언방법4
# class는예약어, rename=True로하면 예약어 및 중복에 대해서 에러를 발생시키지않고 ,다른이름으로 생성해준다.
Point4 = namedtuple('Point', 'xy x class',
                    rename=True)
p4 = Point4(10, 20, 30, 40)

# 선언방법5
temp = [52, 38]
p4 = Point1._make(temp) # _make(): 새로운객체생성 -> List를 NameTuple에 넣을때 사용

# 생성
pt1 = Point(1.0, 5.0)


 

- 값 변경 (기존객체가 아닌 새로운 객체 반환)

print(p2._replace(y=100)) # 새로운 namedtuple 반환