[Python] namedtuple (네임드튜플) 사용 (Struct like C)

By | 2019-08-14

namedtuple은 C언어 Struct와 같이 Value를 여러 개 저장해서 Variable 이름으로 접근이 가능하다. 개인적으로 C Struct와 비슷해서 사용하게 되었다. 출처 1에 따르면 namedtuple은 Python 기본자료형이 아니라고 한다. namedtuple을 사용하기 위해서는 아래와 같이 Collections를 추가해야 한다.

  • from collections import namedtuple

namedtuple 사용하기

출처 1에 제공하는 예제를 조금 변경하여서 아래 예제 코드를 하나 작성하였다.

그림1: namedtuple Example 결과

위 그림1은 위 예제 코드를 실행한 결과 화면이다.

  • “PersonalInfo = namedtuple(“pInfo”, “name age phoneNum”)”은 C Struct와 같이 PersonalInfo라는 Struct 형태의 namedtuple을 생성한다.
  • PersonalInfo를 사용해서 mkInfo, mkInfo2 값을 생성하였다.
  • mkInfo.name, mkInfo.phoneNum, mkInfo.age 등으로 저장한 값을 읽을 수 있다.

namedtuple + list 사용하기

namedtuple과 list를 사용하여 많은 데이터를 쉽게 관리할 수 있는 것 같다 (출처2). 아래 예제 코드 역시 출처 1 코드를 약간 수정하였다.

그림 2: namedtuple + list Example 결과

위 그림2는 namedtuple + list 예제 코드를 실행한 결과이다.

  • “personalInfoList.append(mkInfo)”은 namedtuple로 생성한 값은 list에 추가한다. 위 예제에서는 총 3개의 PersonalInfo를 추가하였다.
  • “sortedPersonalInfoList=sorted(personalInfoList, key=attrgetter(“age”))”은 age 값을 기준으로 Sorting을 진행한다. attrgetter을 사용하기 위해서 “from operator import attrgetter”를 추가해야 한다.
  • sorted 뒤에 “reverse=True”를 추가하면 역순으로 Sorting을 진행한다 (출처 3).

위와 같이 namedtuple을 list와 같이 사용하면 데이터를 효율적으로 관리할 수 있는 것 같다.

실험환경

  • Python Version: 3.7
  • OS: Ubuntu Linux 18.04

출처

  1. https://thrillfighter.tistory.com/454
  2. https://stackoverflow.com/questions/12087905/pythonic-way-to-sorting-list-of-namedtuples-by-field-name
  3. https://www.programiz.com/python-programming/methods/built-in/sorted

Leave a Reply

Your email address will not be published. Required fields are marked *