1 minute read

딕셔너리

#딕셔너리 #해시테이블 #딕셔너리문법 #딕셔너리메서드

1. 해시테이블

파이썬에는 딕셔너리 자료구조가 내장되어 있다.

Non-sequence, Iterable, Key-Value

key는 변경 불가능

딕셔너리는 해시 테이블을 이용하여 Key : Value 를 저장

해시 함수 - 위키백과, 우리 모두의 백과사전

  • 해시 함수

    임의 길이 데이터를 고정 길이의 데이터로 매핑하는 함수

  • 해시

    해시 함수를 통해 얻어진 값

파이썬의 딕셔너리는 해시 함수와 해시 테이블을 이용하여

CRUD 연산의 속도가 리스트보다 빠르다!!

2. 딕셔너리 기본 문법

  • 선언

    a = {
        'name' : 'kyle'
        'gender' : 'male'
    }
    
  • 삽입, 수정

    키가 있으면 수정, 없으면 삽입

    a = {
        'name' : 'kyle'
        'gender' : 'male'
    }
    # 수정
    a['name']='jason'
    # 삽입
    a['address']='Seoul'
    
  • 삭제

    • 딕셔너리.pop(key)

      key의 value 반환 및 삭제, 존재하지 않는 key는 KeyError 발생

      a = {
          'name' : 'kyle'
          'gender' : 'male'
      }
      gender = a.pop('gender')
      print(a) # {'name':'kyle'}
      print(gender) # male
      
    • 딕셔너리.pop(key, default)

      두 번째 인자로 default 값을 지정하여 KeyError 방지 가능

      a = {
          'name' : 'kyle'
          'gender' : 'male'
      }
      phone = a.pop('phone', '010-1234-1234')
      print(a) # {'name':'kyle', 'gender':'male'}
      print(phone) # 010-1234-1234
      
  • 조회

    • 딕셔너리[key]

      a = {
          'name' : 'kyle'
          'gender' : 'male'
      }
      print(a['name']) # kyle
      
    • 딕셔너리.get(key)

      a = {
          'name' : 'kyle'
          'gender' : 'male'
      }
      print(a.get('name')) # kyle
      
    • 딕셔너리.get(key, default)

      a = {
          'name' : 'kyle'
          'gender' : 'male'
      }
      print(a.get('phone')) # None
      print(a.get('phone','없음')) # 없음
      print(a['phone']) # Error 발생
      

3. 딕셔너리 메서드

1) .keys( )

딕셔너리의 key목록이 담긴 dict_keys 객체 반환

   a = {
       'name' : 'kyle'
       'gender' : 'male'
   }
   print(a.keys())
   # dict_keys(['name','gender'])
   
   for key in a.keys():
       print(key)
   # name    gender
   for key in a:
       print(key)
   # name    gender

2) .values( )

딕셔너리의 value목록이 담긴 dict_values 객체 반환

   a = {
       'name' : 'kyle'
       'gender' : 'male'
   }
   print(a.values())
   # dict_values(['kyle','male'])
   
   for key in a.keys():
       print(key)
   # kyle    male

3) .items( )

딕셔너리의 (key, value) 쌍 목록이 담긴 dict_items 객체 반환

   a = {
       'name' : 'kyle'
       'gender' : 'male'
   }
   print(a.items())
   # dict_items([('name','kyle'), ('gender':'male')])
   
   for item in a.items():
       print(item)
   # ('name', 'kyle')    ('gender', 'male')

Updated: