[Python] 07. 딕셔너리(Dictionary) 자료형

2023. 11. 5. 01:01·Programming Language(Sub)/Python

딕셔너리(Dictionary) 자료형


  • 딕셔너리(Dictionary)란

    • 대응 관계를 나타내는 자료형

    • 연관 배열 또는 해시 라고 함

    • key 와 value를 한쌍으로 갖는 자료형

    • key를 통해 value를 얻는다.

    • 임의의 key에 의해 indexed 된 임의의 value들의 해시 테이블

    • key는 그 값을 변경할 수 없는 immutable 타입

    • value는 Immutable, mutable 모두 가능

      • key로 문자열이나 Tuple은 사용가능하지만, list는 사용할 수 없음
    • 순서가 없는 자료형

  • 딕셔너리(Dictionary)의 생성 방법

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

    dic = {'name':'pey', 'phone':'01199993323', 'birth':'1118'}
    a = {1: 'hi'}
    b = {'a': [1,2,3]}
    c = {} # 빈 dictionary 자료형 변수
    d = dict(watch=7, iphone=14, mac=1) # 생성자 
  • 딕셔너리 쌍 추가, 삭제

    • 딕셔너리 쌍 추가

      a = {1: 'a'}
      a[2] = 'b' # 이름[key] = value
      a
      res : {1: 'a', 2: 'b'}
      
      a['name'] = 'pey'
      a
      res : {1: 'a', 2: 'b', 'name': 'pey'}
      
      a[3] = [1, 2, 3]
      a
      res : {1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
    • 딕셔너리 요소 삭제

      a = {1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
      del a[1] # key가 1 인 key:value 삭제
      a
      res : {2: 'b', 'name': 'pey', 3: [1, 2, 3]}
  • 딕셔너리 Key를 사용해 Value 얻기

    grade = {'pey': 10, 'julliet': 99}
    grade['pey']
    res : 10
    
    grade['julliet']
    res : 99
  • 딕셔너리를 만들 때 주의사항

    • 딕셔너리에서 Key는 고유한 값이므로 중복되는 Key를 설정하면, 하나를 제외한 나머지가 무시된다

      a = {1: 'a', 1: 'b'}
      a
      res : {1: 'b'}
    • 딕셔너리 key에 딕셔너리는 당연히 사용하지 못한다

    • value는 key와 달리 상관 없다

  • 딕셔너리 관련 함수

    • Key 객체 만들기(keys 함수)

      : 딕셔너리이름.keys()

      a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'}
      a.keys() // dicts_keys 객체를 리턴한다.
      res : dict_keys(['name', 'phone', 'birth'])
      • Python 3.0 이전에는 a.keys() 리턴값이 리스트였지만, 3.0 이후에는 메모리 낭비를 줄이기 위해 dicts_keys 객체를 리턴함

        • 이 객체는 리스트 고유의 append, insert, pop, remove, sort함수는 사용할 수 없다
      • list가 필요하면, list(a.keys()) 를 사용해 형변환을 하면 된다.

        list(a.keys())
        res : ['name', 'phone', 'birth']
      • dict_keys, dict_values, dict_items 등은 리스트로 변환하지 않아도 iterate(반복) 구문 실행 가능하다.

        for k in a.keys():
            print(k)
        
        res:
        name
        phone
        birth
    • Value 객체(리스트) 만들기 (values 메서드)

      a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'}
      a.values()
      res : dict_values(['pey', '01034242424', '1118'])
    • Key, Value 쌍 객체(리스트) 얻기(items 메서드)

      a.items() # Key와 Value 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다
      res : dict_items([('name', 'pey'), ('phone', '01034242424'), ('birth', '1118')])
    • Key, Value 쌍 모두 지우기(clear 메서드)

      a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'}
      a.clear() # 모든 요소 삭제
      a
      res : {}
    • Key로 Value 얻기(get 메서드)

      a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'}
      a.get('name') # a['name'] 과 같은 결과
      res : 'pey'
      • 여기서 a['nokey']는 오류를 발생시키지만, a.get('nokey')는 None을 돌려준다.

      • get메서드 default 값 셋팅 (찾으려는 key가 없는 경우)

        • a.get(x, '디폴트값') 사용
        • a.get('foo', 'bar') # 딕셔너리에 'foo'라는 값이 없어서 'bar'를 돌려준다.
    • 동시에 여러요소 추가하기(update 메서드)

      a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'}
      a.update({'weight': 67.8, 'height': 189.7})
    • 요소 삭제하기(del 메서드)

      a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'}
      del dict1['birth'] # del dictonary_name[key]
      a
      res : a = {'name': 'pey', 'phone': '01034242424'}
    • 해당 Key가 딕셔너리에 있는지 조사하기(in 함수)

      a = {'name': 'pey', 'phone': '01034242424', 'birth': '1118'}
      'name' in a
      res : True
      
      'email' in a
      res : False

참조) Do it! 점프 투 파이썬 (박응용 지음), https://wikidocs.net (파이썬 계단밟기)

'Programming Language(Sub) > Python' 카테고리의 다른 글

[Python] 09. 변수(Variable)  (0) 2023.11.05
[Python] 08. 불(bool) 자료형  (0) 2023.11.05
[Python] 06. 집합(set) 자료형  (0) 2023.11.05
[Python] 05. 튜플(Tuple) 자료형  (0) 2023.11.04
[Python] 04. 리스트(list) 자료형  (0) 2023.11.04
'Programming Language(Sub)/Python' 카테고리의 다른 글
  • [Python] 09. 변수(Variable)
  • [Python] 08. 불(bool) 자료형
  • [Python] 06. 집합(set) 자료형
  • [Python] 05. 튜플(Tuple) 자료형
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (456)
      • Software Development (27)
        • Performance (0)
        • TroubleShooting (1)
        • Refactoring (0)
        • Test (8)
        • Code Style, Convetion (0)
        • DDD (0)
        • Software Engineering (18)
      • Java (71)
        • Basic (5)
        • Core (21)
        • Collection (7)
        • 멀티스레드&동시성 (13)
        • IO, Network (8)
        • Reflection, Annotation (3)
        • Modern Java(8~) (12)
        • JVM (2)
      • Spring (53)
        • Framework (12)
        • MVC (23)
        • Transaction (3)
        • AOP (11)
        • Boot (0)
        • AI (0)
      • DB Access (1)
        • Jdbc (1)
        • JdbcTemplate (0)
        • JPA (14)
        • Spring Data JPA (0)
        • QueryDSL (0)
      • Computer Science (129)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (5)
        • 시스템 프로그래밍 (23)
        • Algorithm (29)
      • HTTP (8)
      • Infra (1)
        • Docker (1)
      • 프로그래밍언어론 (15)
      • Programming Language(Sub) (77)
        • Kotlin (1)
        • Python (25)
        • C++ (51)
        • JavaScript (0)
      • FE (11)
        • HTML (1)
        • CSS (9)
        • React (0)
        • Application (1)
      • Unix_Linux (0)
        • Common (0)
      • PS (13)
        • BOJ (7)
        • Tip (3)
        • 프로그래머스 (0)
        • CodeForce (0)
      • Book Review (4)
        • Clean Code (4)
      • Math (3)
        • Linear Algebra (3)
      • AI (7)
        • DL (0)
        • ML (0)
        • DA (0)
        • Concepts (7)
      • 프리코스 (4)
      • Project Review (6)
      • LegacyPosts (11)
      • 모니터 (0)
      • Diary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lumana
[Python] 07. 딕셔너리(Dictionary) 자료형
상단으로

티스토리툴바