ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] Dictionary(딕셔너리) 사용법 및 특징
    Programming Language/Python 2022. 2. 26. 00:20

    ※본 포스팅은 개인 학습을 목적으로 작성된 것이므로 정확하지 않은 정보가 포함되어 있을 수 있음을 참고 부탁드립니다.


    딕셔너리


    파이썬에서 리스트(list)와 더불어 가장 많이 사용되는 내장 데이터 타입 중 하나

     

    딕셔너리를 영문 그대로 번역하면 '사전'이라는 뜻이다. 즉, "dictionary" = "사전" 이라고 할 수 있는데, 딕셔너리로 이러한 대응 관계를 나타낼 수 있다. 

    요즘 사용하는 대부분의 언어도 이러한 대응 관계를 나타낼 수 있는 자료형을 가지고 있는데, 이를 연관 배열(Associative array) 혹은 해시(Hash)라고 한다.

    위에서 언급한 것과 같이 "dictionary" 라는 단어와 "사전" 이라는 뜻이 부합되는데, 딕셔너리는 이와 같이 Key와 Value를 한 쌍으로 갖는 자료형이다. Key가 "dictionary"이면 Value는 "사전"이 되는 것이다.

     

    딕셔너리의 특징은 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다. 따라서 특정 키/값을 얻기 위해서 순차적으로 검색할 필요 없이 해당 키나 값만 찾으면 된다.

     

     

    딕셔너리 생성


    딕셔너리의 기본 형태

    - Key와 Value의 쌍 여러 개가 { } 형태로 구성

    - 각 요소는 Key: Value 형태로 이루어져 있고 쉽표로 구분

    - Key에는 변하지 않는 값 사용하며, Value에는 변하는 값과 변하지 않는 값 모두 사용 가능

    - 빈 딕셔너리를 생성할 때도 있음. 가변 데이터 타입이라 추후 언제든지 데이터 추가 가능 (빈 딕셔너리 생성을 원할 경우 빈 중괄호를 사용하거나 dict() 내장함수를 호출하면 됨)

    {Key1: Value1, Key2: Value2, Key3: Value3}

     

    예시

    dic = {'name': 'elena', 'phone': '01012345678'}

     

    dic 의 정보

    key value
    name elena
    phone 01012345678

     

    또 다른 예시로 Key에 정수 형태의 값을 줄 수도 있고 Value에 리스트를 넣을 수도 있다.

     

    ex1 = {1: 'hello'}
    
    ex2 = {'ex': [1,2,3]}

     

     

    딕셔너리 데이터 추가


    olympic_medal 딕셔너리에 Key와 Value가 각각 4와 'none'인 4: 'none' 딕셔너리 쌍 추가

    >>> olympic_medal = {1: 'gold', 2: 'silver', 3: 'bronze'}
    >>> olympic_medal[4] = 'none'
    >>> olympic_medal
    {1: 'gold', 2: 'silver', 3: 'bronze', 4: 'none'}

     

    menu 딕셔너리에 Key와 Value 형태를 각각 문자열, 정수, 리스트 타입 등 원하는 타입으로 설정 후 추가

    >>> menu['pizza'] = 'combination'
    >>> menu
    {'pizza': 'combination'}
    
    >>> menu[20000] = 'price'
    >>> menu
    {'pizza': 'combination', 20000: 'price'}
    
    >>> menu['extra'] = [1, 2, 3]
    >>> menu
    {'pizza': 'combination', 20000: 'price', 'extra' = [1, 2, 3]}

     

     

    딕셔너리 데이터 삭제

    del 함수를 사용하여 del menu[Key]와 같은 형태로 지정한 Key에 해당하는 한 쌍의 데이터를 삭제할 수 있다.


    >>> del menu['extra']
    >>> menu
    {'pizza': 'combination', 20000: 'price'}

     

     

    딕셔너리 사용하기

    1. Key 사용해서 Value 얻기

    리스트나 튜플,문자열에서는 값을 얻기 위해 인덱싱 또는 슬라이싱 기법을 사용했는데, 딕셔너리는 Key를 통해 Value를 구한다. 

    아래 예시에서 'Jane'이라는 Key의 90이라는 Value를 얻기 위해서 grade['Jane']을 사용한 것처럼 어떤 Key의 Value를 얻기 위해서는 딕셔너리 변수이름[Key]를 사용한다.

    >>> grade = {'Jane': 90, 'Mike': 70}
    >>> grade['Jane']
    90
    >>> grade['Mike']
    70

     

    2. 딕셔너리 만들 때 주의 사항

    1) 딕셔너리의 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다.

     

    아래 예시와 같이 동일한 Key가 2개 존재할 경우 1: 'a' 데이터가 무시된다.

    >>> a {1: 'a', 1: 'b'}
    >>> a
    {1: 'b'}

     

    위와 같이 Key가 중복일 경우 1개를 제외한 나머지 Key:Value 값이 모두 무시되는 이유는 Key를 통해서 Value를 얻는 딕셔너리의 특징 때문인데, 동일한 Key가 존재할 경우 어떤 Key에 해당하는 Value를 불러야 할지 알 수 없기 때문이다.

     

    2) 딕셔너리의 Key에 리스트를 사용할 수 없다.

    (* 튜플은 Key로 사용 가능하다.)

     

    딕셔너리의 Key로 사용 가능한 경우는 Key가 변하지 않는 값일 경우이다. 리스트의 경우 값이 변할 수 있기 때문에 Key로 사용할 수 없다.

    아래의 예시는 리스트를 Key로 설정했을 경우 Key로 사용할 수 없다는 오류를 발생시킨다.

    >>> a = {[1,2] : 'hello'}
    Traceback (most recent call last):
    	File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list'

    다만, Value에는 값의 변경 가능 여부에 관계 없이 넣을 수 있다.

     

     

    References

    https://wikidocs.net/16

     

    02-5 딕셔너리 자료형

    [TOC] ## 딕셔너리란? 사람은 누구든지

    wikidocs.net

     

    https://www.daleseo.com/python-ditonary/

     

    [파이썬] 사전(dictionary) 사용법

    Engineering Blog by Dale Seo

    www.daleseo.com

     

     

    댓글

Designed by Tistory.