본문 바로가기
Python

[Python] 자료구조 - collections 모듈 - namedtuple

by 박사과정 모닝 2023. 11. 10.
반응형

[namedtuple 모듈]

namedtuple은 튜플의 형태로 데이터 구조체를 저장하는 방법입니다. 단순히 값들만 저장하던 튜플과 달리, 각 값들이 무엇인지 설정하여 사용할 수 있습니다.

from collections import namedtuple

Person = namedtuple('Person', 'math english')

P1= Person(name = 'Sally', math = 100, english = 100)
P2= Person(name = 'Bob', math = 80, english = 75)

for n in [P1, P2]:
	print('%s의 수학 점수는 %s점, 영어 점수는 %s점입니다.' %n)
    
'''
>>> Sally의 수학 점수는 100점, 영어 점수는 100점입니다.
>>> Bob의 수학 점수는 80점, 영어 점수는 75점입니다.
'''

print(P1.name, P1.math, P1.enlish)
print(P2.name, P2.math, P2.enlish)

'''
Sally, 100, 100
Bob, 80, 75
'''

 

  • _make(): namedtuple()에 새로운 객체 생성
P3 = Person._make(['Peter', 50, 100])

for n in [P1, P2, P3]:
	print('%s의 수학 점수는 %s점, 영어 점수는 %s점입니다.' %n)
    
'''
>>> Sally의 수학 점수는 100점, 영어 점수는 100점입니다.
>>> Bob의 수학 점수는 80점, 영어 점수는 75점입니다.
>>> Peter의 수학 점수는 50점, 영어 점수는 100점입니다.
'''

 

  • _replace(): 인스턴스(객체) 값 변경
P1 = P1._replace(name = 'Jenny')
P2 = P2._replace(math = 100)
P3 = P3._replace(english = 95)

for n in [P1, P2, P3]:
	print('%s의 수학 점수는 %s점, 영어 점수는 %s점입니다.' %n)
    
'''
>>> Jenny의 수학 점수는 100점, 영어 점수는 100점입니다.
>>> Bob의 수학 점수는 100점, 영어 점수는 75점입니다.
>>> Peter의 수학 점수는 50점, 영어 점수는 95점입니다.
'''

 

  • _fields: 생성된 namedtuple()의 필드명을 튜플 형식으로 반환
print(P1._fields)

'''
>>> ('name', 'math', 'english')
'''

 

  • getattr(): namedtuple()의 메소드는 아니지만, 필드명으로 인스턴스의 값을 찾아 반환
print(getattr(P1, 'name')

'''
>>> Jenny
'''

 

  • ** (double-star-operator): 딕셔너리를 namedtuple로 변환
dic = {'name': 'Sunny', 'math': 30, 'english': 40}
P4 = Persion(**dic)

for n in [P1, P2, P3, P4]:
	print('%s의 수학 점수는 %s점, 영어 점수는 %s점입니다.' %n)
    
'''
>>> Jenny의 수학 점수는 100점, 영어 점수는 100점입니다.
>>> Bob의 수학 점수는 100점, 영어 점수는 75점입니다.
>>> Peter의 수학 점수는 50점, 영어 점수는 95점입니다.
>>> Sunny의 수학 점수는 30점, 영어 점수는 40점입니다.
'''
반응형