ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [코딩도장] day7. 딕셔너리
    IT/파이썬 2020. 8. 12. 05:42

    ■ 들어가기

    - 파이썬 코딩 도장 (남재윤/길벗). 을 공부하며 정리하는 블로그


    ▶ Unit12. 딕셔너리 사용하기

         - 12.1 딕셔너리 만들기

         - 12.2 딕셔너리의 키에 접근하고 값 할당하기

     

    >> 12.1 딕셔너리 만들기 <<

    1. 딕셔너리

    - 리스트, 튜플에서 value값만 저장하는 것과 달리 "key-value쌍"으로 데이터를 관리

    - 딕셔너리는 해시(Hash) 기법을 이용하여 데이터를 저장하며

      'key-value'형태의 자료형을 해시, 해시맵, 해시테이블 등으로 부름

    - 사용법: 딕셔너리 = {키1:값1, 키2:값2}

      (일반적으로 key는 문자열로 지정하기 때문에 '(작은따옴표)로 감싸준다)

    >>> lux = {'health':490,'mana':334,'melee':550,'armor':18.72}
    >>> lux
    {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}

    - 키가 중복되어 입력되는 경우 가장 뒤에 입력된 키의 값만 사용됨

    >>> lux = {'health':490,'health':800,'mana':334,'melee':550,'armor':18.72}
    >>> lux
    {'health': 800, 'mana': 334, 'melee': 550, 'armor': 18.72}

     

    2. 딕셔너리 키의 자료형

    - key는 문자열뿐만 아니라 정수, 실수, 불도 사용 가능하며 여러 자료형을 함께 사용 가능함

    - value는 리스트, 딕셔너리 등을 포함한 모든 자료형 사용 가능

      단, key에는 리스트, 딕셔너리 사용 불가

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

     

    3. 빈 딕셔너리 만들기

    - 사용법1: 딕셔너리 = {}

    - 사용법2: 딕셔너리 = dict()

    >>> x = {}
    >>> x
    {}
    >>> x = dict()
    >>> x
    {}

     

    4. dict()로 딕셔너리 만들기

    - 키-값을 연결하거나, 리스트, 튜플, 딕셔너리로 딕셔너리 생성 시 사용

    - 사용법1: 딕셔너리 = dict(키1=값1, 키2=값2)

    - 사용법2: 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))

    - 사용법3: 딕셔너리 = dict([(키1, 값1), (키2, 값2)])

    - 사용법4: 딕셔너리 = dict({키1: 값1, 키2: 값2})

    #사용법1
    - 키는 '(작은따옴표)나 "(큰따옴표)를 사용하지 않아야 함
    => 딕셔너리 생성 시 자동으로 문자열로 변경됨
    >>> lux1 = dict(health=490, mana=334, melee=550, armor=18.72)
    >>> lux1
    {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
    #사용법2
    - 키만 들어있는 리스트와 값만 들어있는 리스트를 zip함수에 넣어줌 (리스트가 아닌 튜플에 저장해도 ok)
    >>> lux2 = dict(zip(['health', 'mana', 'melee', 'armor'], [490, 334, 550, 18.72]))
    >>> lux2
    {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
    #사용법3
    - 리스트 안에 (키, 값) 형식의 튜플을 나열하는 방법
    >>> lux3 = dict([('health', 490), ('mana', 334), ('melee', 550), ('armor', 18.72)])
    >>> lux3
    {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}
    #사용법4
    - dict() 안에 중괄호로 딕셔너리를 생성
    >>> lux4 = dict({'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72})
    >>> lux4
    {'health': 490, 'mana': 334, 'melee': 550, 'armor': 18.72}

    >> 12.2 딕셔너리의 키에 접근하고 값 할당하기 <<

    5. 딕셔너리 키 접근

    - 사용법: 딕셔너리[키]

      ( 키를 지정하지 않으면 딕셔너리 전체를 의미 )

    >>> lux
    {'health': 800, 'mana': 334, 'melee': 550, 'armor': 18.72}
    >>> lux['health']
    800
    >>> lux['mana']
    334

     

    6. 딕셔너리 키에 값 할당하기

    - 사용법: 딕셔너리[키] = 값

    >>> lux
    {'health': 800, 'mana': 334, 'melee': 550, 'armor': 18.72}
    >>> lux['health'] = 2037        # 키 'health'의 값을 2037로 변경
    >>> lux['mana'] = 1184          # 키 'mana'의 값을 1184로 변경
    >>> lux
    {'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72}

    - 지정되지 않은 키로 값을 할당하면 해당 키-값이 할당됨

    - 없는 키로 값을 가져오려고 하면 에러 발생!

    >>> lux
    {'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72}
    >>> lux['mana-regen'] = 3.28    # 키 'mana-regen'을 추가하고 값 3.28 할당
    >>> lux
    {'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28}
    >>>
    >>> lux
    {'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28}
    >>> lux['test']         # 할당되지 않은 키 'test'로 값을 가져옴
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'test'

     

    7. 딕셔너리에 키가 있는지 확인

    - 사용법: 키 in 딕셔너리

    - 결과값으로 True, False 리턴하며 'not in' 은 특정 키가 없는지 확인

    >>> 'health' in lux     # 키 'health'가 존재하는지 확인
    True
    >>> 'health' not in lux # 키 'health'가 없는지 확인
    False

     

    8. 딕셔너리의 키 개수 구하기

    - 사용법: len(딕셔너리)

    >>> len(lux)
    5
    >>> len({'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28})
    5

     

    9. 딕셔너리 키 삭제

    - 사용법: del 딕셔너리[키]

    >>> lux
    {'health': 2037, 'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28}
    >>> del lux['health']
    >>> lux
    {'mana': 1184, 'melee': 550, 'armor': 18.72, 'mana-regen': 3.28}

     

    ● 요약

    1. "key-value쌍"으로 데이터 관리가 필요하다면 '딕셔너리'로!

    2. in, len, del 연산자는 시퀀스 자료형(리스트, 튜플, range, 문자열)과 딕셔너리에 사용 가능

     

    댓글

Designed by Tistory.