python/기타
Python namedtuple
Memory!
2024. 3. 30. 16:06
728x90
반응형
먼저 tuple은 immutable 이기 때문에 데이터의 변경이 불가능 합니다.
그러므로 변수내 값을 더이상 변경하지 않고 사용할 때 효과적으로 사용할 수 있습니다.
>> namedtuple의 값은 변경이 가능!
기본 tuple의 경우 index로 데이터가 접근 가능하지만
namedtuple의 경우 key를 이용해서 데이터의 접근이 가능합니다.
기본 tuple 예시
# tuple 선언
tuple_1 = ('a','b','c',1,2,3)
# index를 통한 데이터 접근
print(tuple[1])
>> b
print(tuple[3])
>> 1
namedtuple 예시
# collections으로 부터 namedtuple import
from collections import namedtuple
# namedtuple 정의
Book = namedtuple('book', 'title price, author')
# namedtuple로 변수 선언
book1 = Book('book_title', 25000, 'author_name') # 순서대로 값을 넣는다.
# key를 통해 값을 볼 수 있음
print(book1.title)
>> book_title
print(book1.price)
>> 25000
print(book1.author)
>> author_name
list 를 이용해서도 namedtuple을 선언할 수 있다.
values = ['book_title2', 20000, 'autor_2']
# list를 넘길 때는 *를 사용
book2 = Book(*values)
# key를 사용하여 동일하게 데이터 접근
print(book2.title)
>> book_title2
dict 를 이용해도 선언 가능
book_dict = {'title': 'book3_title', 'price':18000, 'author':'book3_author'}
# dict를 넘기는 경우 **를 이용해서 kwargs 를 넘겨야 함
book3 = Book(**book_dict)
※ namedtuple 데이터 변경 방법
_replace(kwargs) 를 이용하여 namedtuple data 변경 가능
book1 = book1._replace(title='book1_title')
print(book1)
>> book(title='book1_title', price=25000, author='author_name')
book1 = book1._replace(**{'title':'book1_title_replace'})
>> book(title='book1_title_replace', price=25000, author='author_name')
namedtuple을 dict 타입으로 변환이 가능하다
_asdict 를 이용
# _asdict()를 이용하면 dict 형으로 변환됨
book1_dict = book1._asdict()
print(book1_dict)
>> 'title': 'book1_title_replace', 'price': 25000, 'author': 'author_name'}
위 함수를 이용하면 namedtuple과 dict를 적절히 변환하며 사용이 가능하다.
728x90
반응형