Python namedtuple (네임드 튜플)

2020. 6. 22. 11:16·언어/Python
반응형

introducing python 을 통해서 알게된 네임드 튜플이다.

간단하게 정리하자면 

보통 튜플의 경우에는 인덱스를 통해서 튜플 접근이 가능한데, namedtuple 을 사용하면 

key 값으로 접근이 가능하다고 볼 수 있다. 

즉, key - value 로 작동하는 딕셔너리와 같이 작동한다고 보면 되지만, 튜플의 성질을 가진다.

(참 뭔가 애매한것 같다..)

 

네임드 튜플은 아래와 같은 특성을 지니고 있다는데

 

1. 튜플의 기본 성질인 불변 객체

2. 일반 Class(객체) 형태보다 적은 메모리 사용

3. 다양한 접근법 지원(괄호, ) 

4. Dictionary Key 와 같이 사용 

 

아래의 예제가 네임드 튜플의 특성을 잘 보여주는 것 같다.

from collections import namedtuple
from math import sqrt

pt1 = (1.0, 5.0)
pt2 = (2.5, 1.5)

line_leng1 = sqrt((pt2[0] - pt1[0])**2 + (pt2[1] - pt1[1])**2)

print(line_leng1)

# 네임드 튜플 선언
Point = namedtuple('Point', 'x y')

# 두 점 선언
pt1 = Point(1.0, 5.0)
pt2 = Point(2.5, 1.5)

# 두점 사이 거리 계산
line_leng2 = sqrt((pt2.x - pt1.x)**2 + (pt2.y - pt1.y) ** 2)

# 출력
print(line_leng2)
print(line_leng1 == line_leng2)

# 네임드 튜플 사용
Point1 = namedtuple('Point', ['x', 'y'])
Point2 = namedtuple('Point', 'x, y')
Point3 = namedtuple('Point', 'x y')
Point4 = namedtuple('Point', 'x y x class', rename=True) # default = False

# 출력
print(Point1, Point2, Point3, Point4)

print()
print()

# dict to unpacking
temp_dict = {'x':75, 'y': 55}

# 객체 생성
pt1 = Point1(x=10, y=35)
pt2 = Point2(20, 40)
pt3 = Point3(45, y=20)
pt4 = Point4(10,20,30,40)
pt5 = Point3(**temp_dict)

# 출력
print('pt1:',pt1,'\n','pt2:', pt2,'\n','pt3:', pt3,'\n','pt4:', pt4,'\n','pt5:', pt5,'\n')

print()
print()

# 사용
print(pt1[0] + pt2[1])
print(pt1.x + pt2.y)

결과 이미지는 아래와 같다

 

 

 

참고 링크

https://niceman.tistory.com/197

 

파이썬(Python) - 네임드튜플(namedtuple) 사용 예제 및 소스코드

파이썬(Python) - 네임드 튜플 설명 안녕하세요. 좋은사람 입니다. 오늘은 파이썬 데이터 모델링 파트에서 소개하고 있는 네임드튜플 타입 구조에 대해서 포스팅 합니다. 파이썬에 대용량의 데이�

niceman.tistory.com

http://blog.naver.com/PostView.nhn?blogId=sw4r&logNo=221488347735&parentCategoryNo=&categoryNo=136&viewDate=&isShowPopularPosts=false&from=postView

 

[파이썬(Python)] namedtuple(네임드 튜플) 이란? (_fields 매소드 포함!)

이번에는 간단하게 유용한 튜플 형태를 살펴보자.​namedtuple로 collections 모듈에서 가져올 수 있다. 보...

blog.naver.com

 

반응형

'언어 > Python' 카테고리의 다른 글

[Python] isinstance 함수  (0) 2020.07.16
[python] : for in 반복문, range, enumerate  (0) 2020.07.15
파이썬의 다형성(Polymorphism)  (0) 2020.06.20
파이썬 데코레이터에 대해서?  (0) 2020.06.20
[pandas] : 판다스 전처리 할때 도움될만한 코드들  (0) 2020.06.11
'언어/Python' 카테고리의 다른 글
  • [Python] isinstance 함수
  • [python] : for in 반복문, range, enumerate
  • 파이썬의 다형성(Polymorphism)
  • 파이썬 데코레이터에 대해서?
쟈누
쟈누
Ad astra per aspera
    반응형
  • 쟈누
    쟈누의 기록공간
    쟈누
  • 전체
    오늘
    어제
    • 분류 전체보기 (444)
      • AWS (31)
        • Glue (4)
        • S3 (1)
      • 클라우드 (0)
      • Data Engineering (37)
        • GitHub (10)
        • NiFi (11)
        • Spark (10)
        • Snowflake (0)
        • 머신러닝, AI (6)
      • 언어 (118)
        • 데이터 베이스 (42)
        • JAVA (9)
        • Python (34)
        • Java Script (15)
        • Linux (18)
      • 프로젝트, 인강 그리고 책 (30)
        • Spotify Project (7)
        • RASA chatbot Project (9)
        • Naver shopping Project (6)
        • 빅데이터를 지탱하는 기술 (8)
      • OLD (56)
        • IT 용어 사전 (13)
        • Front End (12)
        • Back End (31)
      • Error code 모음 (165)
        • 1. SQL errors (17)
        • 2. Hadoop errors (20)
        • 3. Linux Errors (14)
        • 4. Python errors (33)
        • 5. JAVA, Spring errors (41)
        • 6. Jav Script errors (10)
        • 7. Dev Tools errors (9)
        • 8. Git errors (8)
        • 9. Jenkins Errors (4)
        • 10. airflow Errors (2)
        • 11. Aws errors (7)
      • 개인 (1)
        • 책 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 블로그 관리
    • 글쓰기
  • 링크

  • 공지사항

    • 간단한 블로그 소개
  • 인기 글

  • 태그

    설치
    MySQL
    SQL
    linux
    리눅스
    Git
    node
    NiFi
    파이썬
    java
    python error
    AWS
    Python
    json
    에러
    API
    자바
    install
    error
    Spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
쟈누
Python namedtuple (네임드 튜플)
상단으로

티스토리툴바