Python Named Tuple을 딕셔너리로 변환하기
네임드튜플(namedtuple) 클래스는 collections 모듈에 정의되어 있으며, 새로운 튜플 하위 클래스를 반환합니다. 이 하위 클래스는 인덱싱과 반복이 가능하면서도, 속성 조회(attribute lookup)를 통해 필드에 접근할 수 있는 튜플 형태의 객체를 생성하는 데 사용됩니다.
생성자는 타입 이름과 필드 목록을 인자로 받습니다. 예를 들어 학생(student) 네임드튜플은 다음과 같이 선언할 수 있습니다.
>>> from collections import namedtuple
>>> student=namedtuple("student","name, age, marks")
이렇게 정의된 네임드튜플 클래스의 객체는 아래와 같이 생성합니다.
>>> s1=student("Raam",21,45)_asdict() 메서드 사용하기
네임드튜플 클래스에는 _asdict() 메서드가 내장되어 있습니다. 이 메서드를 호출하면 객체의 데이터를 키-값 쌍으로 담고 있는 OrderedDict 객체가 반환됩니다.
>>> d=s1._asdict()
>>> d
OrderedDict([('name', 'Raam'), ('age', 21), ('marks', 45)])
일반 딕셔너리로 변환하기
OrderedDict 대신 일반적인 딕셔너리(dict) 객체가 필요하다면, dict() 함수를 사용하여 간단하게 변환할 수 있습니다.
>>> dct=dict(d)
>>> dct
{'name': 'Raam', 'age': 21, 'marks': 45}
이처럼 네임드튜플의 _asdict() 메서드와 dict() 함수를 조합하면, 네임드튜플 객체를 손쉽게 딕셔너리 형태로 변환하여 활용할 수 있습니다.