낭만개발자
낭만개발자
낭만개발자
전체 방문자
오늘
어제
  • 분류 전체보기 (57)
    • Web) HTML & CSS (5)
    • Web) HTTP (2)
    • 언어) Java (2)
    • 언어) Python (6)
    • 언어) PHP (1)
    • Linux (2)
    • 데이터 관리) Pandas (4)
    • Algorithms (13)
    • 개발자 역량 (4)
    • 프로젝트 (14)
      • Django 초기 프로젝트 (1)
      • CatCoDog _ 반려동물 식품 판매 사이트 (9)
      • 개인 홈서버 프로젝트 (2)
      • 이력핏 : AI가 추천해주는 이력서 (2)
    • 문제와 사고 (2)
    • ETC (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬 숫자형
  • css 기본
  • python operator
  • 오늘의 문제
  • css
  • python basic
  • django setting
  • Java
  • leetcode88
  • dp
  • 웹개발
  • Unique Paths
  • python
  • Merge Sorted Array
  • 파이썬 자료형
  • catcodog
  • Leetcode
  • css 위치변경
  • algorithm
  • 파이썬 기초
  • Number Of Island
  • 장고 초기 세팅
  • css basic
  • WEB
  • JWT 웹
  • 파이썬 기본
  • 파이썬
  • 리눅스
  • rainbow table
  • css 포지션

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
낭만개발자

낭만개발자

[Python] Python 자료형(5): 딕셔너리(Dictionary)형
언어) Python

[Python] Python 자료형(5): 딕셔너리(Dictionary)형

2022. 5. 2. 11:54

[Python] 파이썬 자료형(5) 딕셔너리(Dictionary)형

​

​
​

딕셔너리형 (Dictionary)

​
사람에 대한 정보를 기록할 떄, 항목별로 "이름" = "박극복", "생년월일" = "19XX.XX.XX"등 처럼 대응되는 정보끼리 묶어서 기록하곤 합니다.
​
파이썬 역시 이러한 대응 관계를 나타낼 수 있는 자료형을 갖고 있는데, 이것이 바로 딕셔너리(Dictionary)형 입니다.
​
"딕셔너리"는 말 그대로 "사전" 이라는 뜻입니다.
​
사전을 보게 되면, "Sky" 라는 단어에는 "하늘"이라는 뜻이, "apple"이라는 단어네는 "사과"라는 뜻이 각각 대응되어 나타나듯이,
딕셔너리형 역시 "Key값"과 그에 대응되는 "Value값"이 연결된, Key : Value 형식으로 이루어져 있습니다.
​
​

다음은 딕셔너리형의 기본 형식입니다.
​

​
각각의 대응되는 Key 와 Value가 쉼표(,)로 구분되고, 중괄호{}로 둘러싸여 있습니다.
​
보통 여기서 Key값으로는 "이름", "생년월일"이라는 항목처럼 변하지 않는 값을 사용하고, Value값으로는 "박극복", "19XX.XX.XX"처럼 변하는 값, 변하지 않는 값 모두 사용할 수 있습니다.
​
​
​

1) 딕셔너리형 VS 리스트형, 튜플형

​
​
그렇다면 앞서 살펴 본 리스트형, 튜플형과 딕셔너리형은 무엇이 다를까요?
​
가장 큰 차이점은 정보를 처리하는 과정 일 것입니다.
​
우선, 리스트형과 튜플형은 정보를 처리할 떄, 나열된 요솟값을 순차적으로 처리합니다.
​
그렇다면 딕셔너리형은 어떨까요?
​
사전에서 "goal"이라는 단어의 뜻을 찾기 위해 우리는 해당 "goal" 단어를 우선 찾습니다.
사전의 첫장부터 "goal"이라는 단어가 나올 떄까지 모든 단어를 순차적으로 찾아본다면, 하루종일 걸릴지도 모르겠네요.
​
딕셔너리형 역시 이와 같습니다.
​
나열된 요소들을 순차적으로 처리하는 것이 아니라, 필요한 Key값만을 통해 Value값을 도출해낼 수 있는 것입니다.
​
​
​

2) 딕셔너리형 사용시 주의사항

​
딕셔너리형을 사용할 때, 몇가지 주의해야할 사항들이 있습니다.
​
1. Key가 중복되어서는 안된다.
​
​
딕셔너리형은 Key값을 통해서 Value값을 얻기 때문에, 딕셔너리에서의 Key값은 고유한 값이어야 합니다.
​
만약 동일한 Key가 존재한다면, 사용자가 그 Key에 대한 정보를 불러올 떄, 어떤 Key에 해당하는 Value값을 불러내야 할 지 알 수 없기 때문입니다.
​
혹시 만약 Key값을 중복하여 설정하셨더라도, 에러가 뜨지는 않습니다.
다만, 한 Key를 제외한 나머지 Key는 모두 무시될 뿐입니다.
​
다음 예시로 한 번 살펴보겠습니다.
​

​
"Dic" 이라는 딕셔너리 자료형에는 중복되는 "language"키가 있습니다.
이 상태로 Dic 을 출력해보면, 중복되는 "language"키들이 모두 출력되는 것이 아니라, 하나만 출력되는 것을 볼 수 있습니다.
​
​

2. Key값으로 List형을 작성할 수는 없다. (Tuple형은 가능)
​

앞서 딕셔너리형의 Key값으로는 변하지 않는 항목을 사용한다고 했습니다.
​
다시 말해, 딕셔너리형의 Key값으로 쓸 수 있는지 여부는 변하는 값이냐, 변하지 않는 값이냐에 따라 달려 있습니다.
​
바로 앞에서 튜플형과 리스트형의 차이점을 비교해드린 적 있습니다.
​
두 자료형의 차이는 값을 변화시킬 수 있는지 여부 였는데요,
​
따라서 값의 변동이 가능한 리스트형은 딕셔너리형의 Key값으로 사용할 수 없고,
값이 변하지 않는 튜플형은 딕셔너리형의 Key값으로 사용할 수 있는 것입니다.
​
다음 예시로 한 번 살펴보겠습니다.
​

​
Key값으로 리스트형을 입력한 결과, 리스트형은 입력이 불가능하다는 에러 메세지가 뜬 것을 확인할 수 있습니다.
​
​
​

3) 딕셔너리형 활용하기

​
딕셔너리형에 대한 기본적인 것들은 모두 알아보았으니, 이제 딕셔너리형을 활용할 수 있는 방법에 대해 알아보겠습니다.
​
​
1. 딕셔너리에 쌍 추가: 딕셔너리명[key] = 'value'
​

    Dict = {'a' : 1}  
    Dict['b'] = 2
    print(Dict)
    => {'a' : 1, 'b' : 2} 

​
​
2. 딕셔너리에 쌍 제거: del 딕셔너리명[key]
​

    Dict = {'a' : 1, 'b' : 2}
    del Dict['b'] 
    print(Dict) 
    => {'a' : 1}s

리스트, 튜플형에서 인덱싱, 슬라이싱할 때 대괄호에 넣는 숫자는 '주소'의 의미이고, 딕셔너리형에서 대괄호에 넣는 것은 'key명'입니다!
​
​
3. Key값들만 리스트로 추출: 딕셔너리명.keys()
​

    Dict = {'a' : 1, 'b' : 2}
    print(Dict.keys())  
    => dict_keys(['a', 'b'])

​
​
4. value값들만 리스트로 추출: 딕셔너리명.values()
​

    Dict = {'a' : 1, 'b' : 2}
    print(Dict.values())  
    => dict_values([1, 2])

​
​
5. key, value 쌍 튜플로 묶어 추출: 딕셔너리명.items()
​

    Dict = {'a' : 1, 'b' : 2}
    print(Dict.items())  
    => dict_items([('a', 1), ('b', 2])

​
​
6. key, value 쌍 모두 지우기: 딕셔너리명.clear()
​

    Dict = {'a' : 1, 'b' : 2}
    print(Dict.clear())  
    => {}

​
​
7. key값으로 value값 추출: 딕셔너리명.get(key)
​

    Dict = {'a' : 1, 'b' : 2}
    print(Dict.get('a'))  
    => 1
    print(Dict.get('b'))
    => 2

​
​
8. 해당 key가 딕셔너리 안에 있는지 여부 검사: key in 딕셔너리명
​

    Dict = {'a' : 1, 'b' : 2}
    print('a' in Dict)
    => True
    print('c' in Dict)
    => False
저작자표시 (새창열림)

'언어) Python' 카테고리의 다른 글

[Python] Python 자료형(6): 집합(Set)형  (0) 2022.05.08
[Python] Python 자료형(4): 튜플(Tuple)형 (feat. 리스트형)  (0) 2022.05.01
[Python] Python 자료형(3): 리스트(List)형  (0) 2022.05.01
[Python] Python 자료형(2): 문자열(String)형  (0) 2022.05.01
[Python] Python 자료형(1) 숫자(Number)형과 연산자  (0) 2022.04.28
    낭만개발자
    낭만개발자
    Learning By Doing!💪

    티스토리툴바