반응형
[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점입니다.
'''
반응형
'Python' 카테고리의 다른 글
[Python] 객체 지향 프로그래밍_1 (0) | 2023.11.11 |
---|---|
[Python] 자료구조 - collections 모듈 - Counter (0) | 2023.11.10 |
[Python] 자료구조 - collections 모듈 - defaultdict (0) | 2023.11.10 |
[Python] 자료구조 - collections 모듈 - OrderecDict (0) | 2023.11.10 |
[Python] 자료구조 - collections 모듈 - deque (0) | 2023.11.10 |