안녕하세요. 오늘의 포스팅은 파이썬의 "dictionary(딕셔너리)" 에 대해 알아보려고 합니다.
오늘의 준비물은 IDEL 입니다. 파이썬을 처음 접하신 분이거나, IDEL 이 뭔지 모르겠다 하시는 분은 아래 링크를 참조하시면 좋을 것 같습니다.
2021.03.30 - [Python] - [Python] IDLE 파이썬 GUI로 print 사용하기
[Python] IDLE 파이썬 GUI로 print 사용하기
오늘의 포스팅은 IDLE(Intergrated DeveLopment Environment) GUI(Graphical User Interface) 사용입니다. IDLE 은 파이썬 통합 개발 환경 Tool로, 파이썬에서 기본 제공하고 있습니다. 보다 파워풀하다고 할 수..
all-knowledge-of-the-world.tistory.com
아시다시피 "dictionary"사전이란 뜻이죠. 우리가 알고 있는 사전은 검색창에 단어를 입력하면 단어의 뜻이 바로바로 검색이 되는 것인데, 파이썬의 "dictionary"도 이와 비슷하게 작동되기 때문에 "사전"이라고 그대로 사용하고 있나 봅니다. "dictionary" 영어가 길어서 한글을 사용하겠습니다. "딕셔너리는" keys와 values로 구성됩니다. "keys"는 단어, "values"는 뜻, 이 정도만 알고 있어도 "딕셔너리"를 모두 아신 거나 다름없습니다.
간단히 코드를 예로 들어 보겠습니다.
중괄호 { } 로 "딕셔너리"를 정의합니다. 배열/리스트 대괄호 [ ] 인데, 여기에 차이가 있습니다.
코드를 설명드리면, 사전에다가 숫자 1의 뜻은 영어로 '원', 숫자 2의 뜻은 영어로 '투', 숫자 3의 뜻은 '쓰리'라고 사전에 입력해 두었습니다. 이제 사전에서 숫자 1을 찾으면 '원'이라고 알려 주는 코드가 되겠습니다. 여기서 숫자는 그대로 입력하면 되고, 글자(one, two, three)는 따옴표( " 또는 ' ) 반드시 붙여야 에러가 안 납니다.
다음은 "딕셔너리"를 사용하는 가장 큰 이유라고 저 나름대로 생각하는데, 그것은 "속도"입니다. 사전에서 찾고 싶은 값(keys)을 입력하면 바로 알려 주는 것이죠. 얼마나 빠른지 객관적으로 살펴보기 위해 시간을 측정해 보도록 하겠습니다.
시간을 측정하기 위해서는 타이머가 필요하겠죠.
"timeit"을 연결해줍니다. 아마 따로 패키지를 설치 안 하셔도 될 겁니다. 문제시 댓글 남겨 주세요.
"timeit" 패키지에 default_timer( ) 사용하겠습니다. (전문가님들 감사드립니다. 잘 쓰겠습니다.)
Fig.3을 보면, 타이머가 두 번 쓰였는데, 하려고 하는 것은 타이머 사이의 코드의 실행 속도를 측정하려고 하는 것입니다.
그래서, 타이머 사이에 측정하려는 코드를 위치시키고, 코드를 실행하면, 두 타이머의 시간 차이를 이용해서 코드의 작동 시간을 측정할 수가 있습니다.
코드를 실행시켜 보겠습니다. 먼저 Data를 만들어 주겠습니다.
리스트 a를 선언하고 숫자 1부터 10,000,000까지 만들면, 리스트 a에 천만 개의 Data가 생성이 됐습니다.
a[-1]의 "-1"은 마지막 배열이라는 뜻입니다. 리스트는 순서가 있기 때문에 마지막 배열 값은 당연히 마지막에 입력된 10000000입니다.
다음은 찾고 싶은 숫자를 찾아볼 텐데요, 마지막에 입력된 10,000,000을 찾아보겠습니다. if 문으로 "내가 찾는 숫자가 맞으면 그 숫자를 출력해라"라는 것을 코딩했습니다. 아마도 리스트를 처음부터 끝까지 일일이 찾아야 하기 때문에 마지막 값을 찾으라고 했으니, 가장 시간이 오래 걸릴 것입니다.
코드를 *.py 파일로 저장해서 실행시켜 보았습니다.
반복 실행해 보니 약 0.65초 정도 되는 것 같습니다. 결과 시간이 일정하지 않았지만 큰 차이가 아니었기 때문에 별문제가 아닌걸로 느꼈습니다.
다음은 "딕셔너리"로 똑같이 해보겠습니다.
딕셔너리 Data를 만들어 보겠습니다.
딕셔너리는 keys와 values 리스트를 만들고, 마지막에 dict(zip( A , B )) 으로 딕셔너리를 만들어 줄 겁니다. 이 방법이 제가 제일 좋아하는 방법입니다. 코딩에는 여러 가지 방법이 있겠지만, 자신이 가장 좋아하는 방법으로 기억해주시면 아무 문제가 없을 것 같습니다.
이렇게 만들어진 딕셔너리는, 숫자를 검색하면 자신의 숫자가 출력되도록 만들어 준 것입니다. 왜냐면, 이미 보여 드렸던 리스트에서 for, if 문으로 검색하는 것과 비교하기 위해 최대한 비슷하게 Data를 만들어 준 것입니다.
이제 타이머를 위와 같이 배치했습니다. 딕셔너리는 내가 검색하고 싶은 값을 바로 입력만 해주면 찾아 주기 때문에 아주 간단하게 코딩이 완성이 됐습니다.
실행시켜서 시간을 보도록 하겠습니다.
다섯번에 걸쳐 실행해 보았습니다. 0.1초도 걸리지 않았습니다.
성격이 꼬일 대로 꼬여서 평균을 알아야 했습니다. 엑셀까지 열어서 평균을 계산하니, 0.026574 초입니다.
20배 정도 빨랐습니다.
많은 Data를 처리해야 한다면, "딕셔너리(dictionary)"를 이용해 보세요. 당신의 시간을 아껴 줄 것입니다.!!
여기까지입니다.
'Python' 카테고리의 다른 글
[Python] 가상환경에서 자유롭게 코딩하기 - PyCharm 설치편!! (0) | 2022.07.14 |
---|---|
[Python] 사이파이(scipy)를 이용해 노이즈 데이타를 필터(Butterworth fillter) 링 해보자!! (0) | 2021.04.15 |
[Python] 파이썬 수학 두번째, 삼각함수 그래프를 그려보자! (0) | 2021.04.06 |
[Python] matplotlib 패키지를 이용한 간단한 그래프 생성, 패키지 설치부터 연습까지 한번에! (0) | 2021.04.04 |
[Python] numpy 패키지를 이용해 수학, 행렬의 덧셈, 뺄셈, 곱셈(내적)을 해보자!! (0) | 2021.04.03 |
댓글