이번 시간에는 nametuple에 대해서 공부해보았다.
from collections import namedtuple
from math import sqrt
pt1 = (1.0, 2.0)
pt2 = (2.0, 5.0)
점 pt1과 점 pt2 사이의 거리를 구해보자.
lenth_12 = sqrt((pt1[0]-pt2[0])**2 + (pt1[1]-pt2[1])**2)
이러한 방식의 문제는 인덱싱을 실수하면 값이 달라지는 문제점을 안고 있다.
그래서 각 요소가 무엇인지 key값처럼 알려주는 namedtuple을 사용하면 실수를 줄일 수 잇다.
네임드 튜플의 사용법(클래스 선언과 유사한 점이 있음)
<여러가지 튜플 선언 방법>
a. Point = namedtuple('point','x y')
b. Point = namedtuple('point', ['x', 'y'])
c. Point = namedtuple('point', 'x, y')
d. Point = namedtuple('point', 'x y z x class' remane=True)
point1 = point(10, 20)
point2 = point(x=15, y=30)
point3 = point(x=20, 40)
만약에 우리가 dic형태의 데이터를 namedtuple로 바꾸고자 한다면 어떻게 해야할까???
이때 필요한 방식이 언패킹이다.
dict1 = {'x':20, 'y': 30}
point4 = point(**dict1)
이번에는 리스트형태를 named형태로 바꿔보자.
list1 = [10,50]
point5 = point._make(list1)
namedtuple로 만들어진 데이터의 키값을 알고 싶을때????
print(point5._fields)
namedtuple을 일단 dic으로 바꾸고 싶다면???
print(point3._asdict())
이런식으로 활용하면 됨 다음 장에서는 namedtuple을 활용해보자.