본문 바로가기

Python

주식 알고리즘 만들기 - 2 . 자료구조 (튜플, 딕셔너리)

반응형

#참고 출처

https://wikidocs.net/2858

 

#튜플

튜플과 리스트의 차이점

1) 튜플은 '(' 와 ')' 사용한다.
2) 리스트 내의 원소를 변경할 수 없다.
, 즉 list[0] = 'change' 할 수 없다.  

 

1) 튜플 슬라이싱 [:]

튜플은 ()을 사용해서 슬라이딩도 (:) 으로 사용할거라고 생각하는데, 리스트와 똑같이 [ : ] 를 사용한다.

 

#딕셔너리

 

여태까지 리스트와 튜플에 종목이라는 하나의 데이터를 저장했지만, 연관된 데이터 저장하지는 못했다

우리는 이제 딕셔너리를 배우고 연관된 데이터도 함께 저장해보도록 합시다. 

먼저, 딕셔너리는 [ ] 도 아니고 ( ) 도 아닌 { } 로 표현할 수  있다.

내장함수 type을 이용해서 유형이 딕셔너리가 맞는지 확인해보자.

 

현재가 = {}
type(현재가)
>>dict

 

dict는 dictionary의 준말 표현이다. 이제 데이터를 넣어보자

 

현재가['삼성전자'] = 56200
현재가
>> {'삼성전자': 56200}

분명 list[] = ' ' 라고 작성하면 인덱싱 0~리스트 길이 만큼 위치를 찾은 다음 그 데이터를 바꾼다.

하지만 딕셔너리는 dict[key] = value 라는 한 쌍으로 저장하는 것이다. 리스트에서는 오류가 난 걸 볼 수 있다.

 

다음 LG에너지 솔루션을 추가해보자.

 

현재가['LG에너지솔루션'] = 482500
현재가
>> {'삼성전자': 56200, 'LG에너지솔루션': 482500}

여기서 알아야 할 것은 딕셔너리는 리스트 튜플과 달리 인덱싱을 지원하지 못한다.

why? 딕셔너리는 순서대로 저장하는 것이 아니라 데이터 쌍을 서로 연결만 시키는 기능이기 때문이다.

 

 

1) 딕셔너리 데이터 삽입 및 삭제

다음은 SK하이닉스 현재가를 삽입하고 삭제해보자. 

딕셔너리는 리스트의 append나 insert 같은 메서드를 지원하지 않으며, 명시적으로 키-값 쌍을 넣어야한다.

 

현재가['SK하이닉스'] = 91200
현재가
>> {'삼성전자': 56200, 'LG에너지솔루션': 482500, 'SK하이닉스' = 91200}

삭제는 마찬가지로 del을 이용하면 삭제할 수 있다.

대신 키만 넣으면 된다.

 

del 현재가['SK하이닉스']
현재가
>> {'삼성전자': 56200, 'LG에너지솔루션': 482500}

value 값하고 같이 지워 진 것을 확인 할 수 있다.

 

2) 딕셔너리로부터 키-값 구하기

앞에서 딕셔너리의 데이터 값 (키와 값)을 넣었다. 그러면 우리는 키값(종목)만 불러오고 싶을 때가 있고, 값(현재가)만 불러오고 싶어질 때가 있을 것이다. 그때 제공하는 것이 keys(), values() 라는 메서드이다.

먼저 키값을 불러와보자

 

현재가.keys()
>> dict_keys(['삼성전자', 'LG에너지솔루션', 'SK하이닉스'])

입력하면 리스트도 아닌 것이 튜플도 아닌 것이 알 수 없다. 말 그대로 리스트값도 아닌 type(현재가.keys()) 는 dict_keys 라는 것을 알 수 있다. 즉, 리스트로 바꿀려면 list(현재가.keys()) 값으로 바꾸어야 한다.

마찬가지로 list(현재가.values()) 값으로 표현하면 키와 값을 리스트로 변환할 수 있다.

 

e

이번엔 딕셔너리 내에 키 데이터가 있는가라는 것을 어떻게 확인할까 라는 궁금증이 생길 수 있다.

in을 통해서 확인이 가능하다.

 

'SK하이닉스' in 현재가.keys()
>> True

딕셔너리 내에 있는 키값이면 True로 반환 할 것이며, 그렇지 않으면 False로 반환 할 것이다. 

728x90