IT 삽질기

python Namedtuple 사용하기 본문

개발/python

python Namedtuple 사용하기

화이팅빌런 2021. 8. 26. 02:19

이번 글에서는 python Collections 모듈에 있는 namedtuple에 대해서 알아보도록 하자.

먼저 tuple에 대해서 간단하게 알아보자.

tuple

tuple는 순서가 있고 값을 변경할 수 없는(immutable) 객체로 일반적으로 List와 비교된다.(List는 값을 변경할 수 있음) tuple의 요소에 접근하려는 경우 index의 값을 이용하여 접근하게 되는데 예제를 통해 알아보도록 하자.

tuple는 위와 같이 사용되며, 어떤 index에 어떤 값이 있는지를 알고 있어야 한다는 단점이 있다.

namedtuple

namedtuple는 index와 name를 통한 접근이 가능한 객체로 기존 tuple보다 좀 더 직관적인 접근이 가능하며, 메모리 활용에 최적화 되어 있다고 설명한다. 기본 자료형이 아닌 collection에 있어 사용하기 위해서는 import 과정이 필요하다.

namedtuple를 선언하기 위한 방법은 여러가지가 있으며, list형식, ','로 구분, 띄어쓰기로 구분 하는 방법이 있다. 기본적인 선언 방법은 아래와 같으며, 모두 같은 동작을 한다. Point라는 이름의 namedtuple를 생성하였으며, x, y의 값을 가지게 된다. 

이제 namedtuple를 만들어보자. 데이터를 입력하기 위해 아래와 같이 사용하고, 입력되는 데이터들은 기본적으로 순서에 맞춰지고 변수명을 사용하여 값을 입력하는 것도 가능하다.

namedtuple의 각 변수에 접근하려면 어떻게 해야할까?

tuple에서 제공하는 기본적인 방법인 index를 통한 접근과 name를 사용하여 접근하는 방법을 모두 제공한다. index를 통해 접근하는 방법과 name를 통해 접근하는 방법이 서로 다른대 아래의 예제를 살펴보자.

index를 통해 접근하는 경우 기존의 tuple에서 사용하는 것처럼 []를 이용해 접근하고 name를 통해 접근하는 경우와는 다르다.

마지막으로 namedtuple에서 제공하는 메서드들을 확인해보자. 위에서 만들었던 p에서 제공하는 메서드들은 아래와 같으며 맨 아래에 x,y에 대한 접근도 가능한 것을 확인할 수 있다.

몇가지 메서드들의 대해서만 알아보자.

_make

새로운 인스턴스 생성

_asdict

namedtuple를 dict형식으로 변경

_replace

지정된 필드를 새 값으로 대체하며 기존과 다른 새로운 인스턴스를 반환(immutable 특성)

_fields

필드 이름을 나열

 

 

참고자료

https://docs.python.org/3/library/collections.html

https://zzsza.github.io/development/2020/07/05/python-namedtuple/

https://thrillfighter.tistory.com/454

'개발 > python' 카테고리의 다른 글

Python list 조합 구하기  (0) 2022.07.28
python 정규표현식 사용하기(2)  (0) 2021.08.16
python 정규표현식 사용하기(1)  (0) 2021.08.15
python datetime <-> 문자열 변경하기  (0) 2021.08.07
windows에 jupyter설치하기  (0) 2021.08.05
Comments