이번엔 파이썬의 특수한 자료형인 딕셔너리 자료형을 학습하도록 하겠습니다. 해당 자료형은 저도 잘 사용하지 않는 관계로 자세하게 공부하면서 포스팅을 해야 하겠습니다. 제가 딕셔너리 자료형을 소홀히 한 이유는 다른 언어에서는 배열만 존재하고 해당 배열이 파이썬 언어에서는 리스트로 사용되기 때문에 딕셔너리 자료형은 자주 사용되지 않거니 하고 생각해기 때문입니다. 하지만 생각보다 자주 사용되더군요. 따라서 생성부터 자세하게 알아보도록 하겠습니다.

 

출처: https://wikidocs.net/16 

(점프 투 파이썬)

 

1. 딕셔너리 자료형의 생성

 

기본적으로 딕셔너리 자료형은 Index로 이루어져 있지 않고 key : value 이렇게 사전처럼 이루어져 있으므로 생성 할 때도, key값과 value값을 모두 생성 해 줘야 합니다. DB를 배우신 분은 아시겠지만 KEY값은 일반적으로 유일한 값이어야 한다는 것을 아실 것입니다. 그리고 파이썬의 딕셔너리에서도 유일한 값으로 사용합니다. 그러면 코딩을 해서 생성 해보록 하겠습니다.

 

 

 dic이라는 dictionary에 zipcode와 phone을 'key'와 value쌍으로 추가 했습니다. 그런데 여기에 이름이 빠진 것 같아서 'name'과 그에 해당하는 값을 추가 해 줬습니다. 추가하는 방법은 dictionary 이름['key 이름'] = value 입니다. 이렇게 해 줬더니. 값이 정상적으로 들어 간 것을 확인 할 수가 있습니다. 그런데 핸드폰이 dictionary에서 필요가 없어졌다고 합니다. 그러면 삭제를 해 줘야 하는데 이건 del명령어를 사용해줘야 합니다. 즉, del dictionary이름['key이름'] 이렇게 지우면 됩니다. 그러면 정상적으로 phone 값이 사라진 것을 볼 수 있습니다.

 

 기존에 인덱스로 자료에 접근하던 프로그래머들에게는 매우 생소한 자료형이긴 하지만 처음 프로그래밍 하는 사람들에게는 오히려 이게 편리 할 수도 있을 것 같긴 합니다. 프로그래밍 시에는 리스트나 Ndarray가 더 많이 쓰이긴 하지만요. (딕셔너리도 의외로 쓰이긴 합니다. 무시해서는 큰 코 다칩니다. 저처럼요)

 

 그럼 다음으로 넘어가서. 딕셔너리를 활용하는 방법에 대해서 알아 보도록 하겠습니다. 실제로는 판다스 DataFrame안에 넣어서 사용하거나 하지만 저처럼 기초를 모르면 흔들리기 때문에 기초부터 자세히 짚고 넘어가도록 하겠습니다.

 

 

 

 dictionary에 접근하는 방법은 dictionary이름['key'] 입니다. 추가하는 방법과 비슷합니다. 따라서 나중에 공부하도록 하겠지만 pandas나 numpy에서 한 열이나 행을 출력하거나 할 때도 딕셔너리를 이렇게 사용 할 수 있겠네요. 하지만 For문으로 i+를 통해서 index를 증가 시키면서 점진적으로 출력시키는 데에는 어려움이 있을 것 같습니다. 그래서 list를 사용합니다. dictionary의 key이름이 [1] [2]....이렇게 index처럼 구분 될 수 있으면 반복 문이 사용 될 수도 있겠네요. 어쨌든, 그건 추후의 일이고.

 

 앞에서도 언급했는데, 딕셔너리를 만들 때 주의해야 할 사항은 첫째로  key는 반드시 유일해야 한다는 것입니다. 그렇지 않으면 하나를 제외한 나머지 값들이 무시되어 버리는 현상이 발생해 버립니다. 그리고 key는 불변해야 한다는 것 입니다.

 

 

2. 딕셔너리 관련 기초 함수

 

 

딕셔너리를 자유롭게 다루기 위해서는 관련 개념을 아는 것 뿐만 아니라, 동작하는 함수들도 알고 있어야만 합니다. 물론 필요 할 시에 참조해도 됩니다. 그냥 이런 기능이 있었지~하고 알고 있으면 됩니다.

 

 

 

 dictionary.keys() 라는 함수가 있습니다. 그러면 이 함수는 dictionary의 key만을 모아서 dict_key라는 객체를 리턴합니다. 주의 할 것은 여기서 이것은 리스트처럼 보이지만, 리스트가 아니라는 점입니다. 파이썬 2.x, 정확히는 2.7까지는 dict_key는 list를 리턴했지만 3.0이후에는 list가 아닌 단순한 객체로서 리턴 되었습니다.

 

 

 

 

dictionary.keys()가 출력하는 것이 list였다면 list()안에 들어가서 list가 만들어 질리가 없겠죠? 그런데 list가 만들어 졌습니다.

 

 뿐만 아니라 리스트 함수인 append를 사용 할 수 없다는 에러 메세지가 출력이 됩니다. 이러한 정황들로 봐서, dictionary.keys()가 출력하는 것은 리스트가 아닌 단순한 객체를 출력하는 것으로 볼 수 있습니다.

 

dictionary.keys()와 비슷하게 dictionary의 value값을 얻고 싶다면 dictionary.values()함수를 사용하면 됩니다. 이것도 싫다. 나는 key랑 value 쌍으로 얻고 싶다. 하면 dictionaly.items()함수를 사용하시면 됩니다. 사용은 다음과 같이 하시면 됩니다. 생각보다 매우 간단합니다.

 

 

 

각각 dictionary.values()는 dict_values객체를 그리고 dictionary.items()는 dict_items객체를 리턴 하는 것을 볼 수 있습니다. 뿐만 아니라 dictionary자료형은 list처럼 clear()함수를 통해 dictionaryd의 key : value 쌍을 지우는 것을 지원 합니다. dictionary.clear() 이렇게 사용하면 되겠습니다.

 

 딕셔너리 자료형은 저도 잘 모르는 관계로 공부하면서 포스팅 하고 있습니다. 그래서 기초와 심화로 나누어서 포스팅 할 것입니다. 이번에 dictionary를 잘 공부해두면 저도 좋고 이걸 보시는 분들도 좋을 것 같아서 말이죠 ㅎㅎ

 

 

 

'머신러닝 > 기초 문법' 카테고리의 다른 글

넘파이 기초 - 색인과 슬라이싱 기초(2)  (1) 2019.01.31
5. 딕셔너리 심화 - (2)  (0) 2019.01.30
4. 리스트와 관련 메서드  (0) 2019.01.28
3. String -(2) : string 함수  (0) 2019.01.24
3. String - (1)  (0) 2019.01.22

+ Recent posts