일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬3
- pythongui
- matlab
- VBA
- 비주얼베이직
- pandas
- 아웃룩
- 안드로이드
- windows
- Android
- git
- 깃
- 파이썬GUI
- 윈도우11
- office
- 문자열
- Windows11
- Outlook
- 엑셀
- pyqt5
- python
- Windows10
- python3
- 윈도우10
- html
- Excel
- 파이썬
- 파워포인트
- 오피스
- win32com
Appia의 IT세상
파이썬[Python] 딕셔너리(Dictionary)와 클래스(Class) 비교 본문
파이썬[Python] 딕셔너리(Dictionary)와 클래스(Class) 비교
데이터 관련된 작업을 하다보면, 딕셔너리 또는 클래스를 통해서 데이터를 정리를 하곤 합니다. 저의 경우 압도적으로 클래스를 많이 사용하는 편입니다. 하지만, 경우에 따라서 클래스보다 딕셔너리(Dictinary)를 사용하고 합니다. 그래서 이 두가지에 대해서 몇가지 비교를 해보고자 합니다.
사용 관점
딕셔너리의 경우 새로운 맴버 추가시에 매우 편리합니다. 속성들에 대해서 균일하지 않을 경우에 관련된 부분에 Key값에 객체의 이름을 적고, 객체 속성 전체를 값으로 사용하여 사용하는 경우가 많습니다. 예를 들면, 제가 특정 CAN_Channel 이름을 가지는 이라는 객체를 가지고 있습니다. 이 객체의 속성을 매우 많은 편입니다. 이럴 경우 다음과 같이 속성을 추가합니다.
# 최초 선언시
Dict = {"CAN_Channel":CAN_Channel}
# 기존 Dict 이라는 딕셔너리 존재시
Dict["CAN_Channel"] = CAN_Channel
이와 같이 사용이 가능합니다. 이 경우 별도의 CAN_Channel의 속성을 몰라도 바로 사용이 가능합니다. 하지만, 이럴 경우 내부에 특정 속성을 사용할 때 관련해서 확인하기가 매우 힘들 수 있습니다. 저는 딱 정해진 속성을 가지는 항목들에 대해서 만들거나, 관련된 정보를 읽어올 때는 Class를 사용합니다. 관련해서 한번 살펴보겠습니다.
위와 같이 특정하게 정해진 속성을 사용하고, 관련해서 특정 기능을 추가할 때 매우 응용합니다.
class Msg :
def __init__(self,data):
self.Name = data[0]
self.Direction = data[1]
self.Size = data[2]
def print_Name(self):
print(self.Name)
위에서 보이는 바와 같이 정해진 속성은 Name, Direction, Size입니다. 이 부분만 가지고 사용하면, Class를 사용하면 보다 편리하게 원하는 데이터를 읽어올 수 있습니다. 그리고 또한 데이터의 유효성 관련 자체 메소드를 만들 때에도 매우 유용합니다.
파이썬[Python] 007 튜플(Tuple), 딕셔너리(Dictionary)
성능측면
그럼 이제 성능적인 측면에 대해서 살펴보겠습니다. 성능적인 측면을 확인하기 위해서 다음과 같이 예시 코드를 작성해봤습니다.
from timeit import default_timer as timer
from datetime import timedelta
class value:
def __init__(self, v = 0 ):
self.A = v
def class_value():
for i in range(0, 1000):
value1 = value(0)
def dict_key_value():
V = 0
for i in range(0,1000):
A = {"A":V}
def print_variable():
class_value()
def print_direct():
dict_key_value()
print("Class execution time")
start = timer()
print_variable()
end = timer()
print(timedelta(seconds=end-start))
print("Dict execution time")
start = timer()
print_direct()
end = timer()
print(timedelta(seconds=end-start))
일단, 클래스와 Dictionary 속성 크기는 한개로만 잡고 비교 분석을 해봣씁니다.
Class execution time
0:00:00.000341
Dict execution time
0:00:00.000070
보이는 바와 같이 확실히 클래스(Class)를 사용하는 것보다 Dictionary를 사용하는 것이 속도적인 측면에서는 4~5배 정도 이득을 얻을 수 있습니다.
물론, 위의 두 데이터 타입은 사용 용도에 따라서 매우 편리해질 수 있습니다. 물론, 개인의 선호도에 따라서 어떤 데이터 타입을 사용할 것인지에 대해서 달라질 수 있습니다. 하지만, 많은 데이터를 처리해야하거나 많은 데이터들을 단순 복잡한 변수용으로 사용할 경우에는 확실히 Dictionary가 매력적입니다.
(물론, 실제 업무를 진행하다 보면, 위의 두가지를 복합적으로 사용하게 됩니다.
이번 포스팅에서는 파이썬[Python] 딕셔너리(Dictionary)와 클래스(Class) 비교에 대해서 간단히 비교해봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다.
'Python > Python 응용' 카테고리의 다른 글
Python[파이썬] QR 코드 생성 하는 프로그램 만들기 1번째 - QR코드 관련 모듈 설치(qrcode) (0) | 2021.01.17 |
---|---|
파이썬[Python] 폴더의 파일 목록에서 파일명만 출력하는 방법 (0) | 2021.01.14 |
파이썬[Python] 특정 동작의 실행시간 측정하기 (0) | 2020.12.17 |
파이썬[Python] 입력된 날짜 기준으로 날짜 세기, D-Day 세기 (0) | 2020.12.11 |
파이썬[Python] 두파일 내에 동일한 단어 확인 및 비교하기 (0) | 2020.10.15 |