본문 바로가기
파이썬

파이썬 딕셔너리

by yoonjunho 2023. 3. 6.

https://wikidocs.net/16

 

02-5 딕셔너리 자료형

`[추천 동영상 강의]` : [https://www.youtube.com/watch?v=BmXDox6ZFzo](https://www.youtube.com/watch?v=BmXDo…

wikidocs.net

 

다음은 기본 딕셔너리의 모습이다.

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

각각의 요소는 Key : Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있다.

 

위에서 Key는 각각 'key1', 'key2', 'key3'...이고, 각각의 Key에 해당하는 Value는 'value1', 'value2', 'value3'이 된다.

 

딕셔너리 dic의 정보

key : value

key1 value1
key2 value2
key3 value3

 

또한 다음 예처럼 Value에 리스트도 넣을 수 있다.

>>> dic = { 'key1': [1,2,3]}//key1이라는 문자열을 key로 설정하였다. 
                            //[1,2,3]이라는 리스트를 key1이라는 키의 요소로 하였다.

 

 

 

딕셔너리 선언 방법

#빈 딕셔너리 선언하기
>>>my_dictionary = {}
>>>print(my_dictionary)
{}

#type() 함수를 통해 자료형을 확인하기
>>>print(type(my_dictionary))
<class 'dict'>

 

딕셔너리 요소(key : value쌍) 추가하기

>>> a = {1: 'a'}//딕셔너리에 key-value쌍을 추가하는 방법 01
>>> a[2] = 'b'//딕셔너리에 key-value쌍을 추가하는 방법 02
>>> a
{1: 'a', 2: 'b'}

 

딕셔너리 요소(key : value 쌍) 삭제하기

>>> del a[1]
>>> a
{2: 'b'}

 

딕셔너리에서 Key 사용해 Value 얻기 (Key를 이용해 Value에 접근)

방법1.  key와 [ ] 이용

>>> 성적 = {'김아무개': 95, '박아무개': 100}
>>> 성적['김아무개']
10
>>> 성적['박아무개']
99

리스트나 튜플, 문자열은 요솟값을 얻고자 할 때 인덱싱이나 슬라이싱 기법 중 하나를 사용했다. 하지만 딕셔너리는 단 한 가지 방법뿐이다. 바로 Key와 [ ] 를 사용해서 Value에 접근하는 방법이다. 

어떤 Key의 Value를 얻기 위해서는 딕셔너리변수이름 [Key]를 사용한다.

 

 

방법2. 함수 .get(키이름) 이용

>>> a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'010-9999-1234'

 

 

 

 

 

딕셔너리 관련 함수들  : 

.keys() 키(key)들만 뽑아내기 ( dick_keys객체에 key들을 리스트처럼 넣어서 리턴)
.values() value들만 뽑아내기 (dick_values객체에 value들을 리스트처럼 넣어서 리턴)
.items() 요소(key:value쌍)들 전부 뽑아내기 ( dick_items 객체에 item들을 리스트처럼 넣어서 리턴)
.clear() 딕셔너리를 초기상태 { }로 초기화, 전부 삭제한다.
키 in 딕셔너리  해당 키(Key)가 해당 딕셔너리에 있는지 없는지를 확인한다(이미 있으면 True 없으면 False를 리턴)
.has_key() 해당 키(Key)가 해당 딕셔너리에 있는지 없는지를 확인한다(이미 있으면 True 없으면 False를 리턴)
has_key는 이제 사용할 수 없고, in으로 대체되었다.

키(key)만 뽑아 내기 - .keys()

>>> a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])

ㄴ 딕셔너리 변수 이름.keys()는 딕셔너리 a의 Key만을 모아서 dict_keys 객체를 리턴한다. 

어떤 다른 블로그의 글 .keys()가 리스트를 리턴한다고 설명하고 있다.

dict_keys 객체는 리스트 고유의 append, insert, pop, remove, sort 함수는 수행할 수 없다.

#dict_keys 반복문 사용예시
>>> for k in a.keys():
...    print(k)
...
name
phone
birth

 

Value만 뽑아내기 - .values()

>>> a.values()
dict_values(['pey', '010-9999-1234', '1118'])

values 함수를 호출하면 dict_values 객체를 돌려준다. 

 

 

Key, Value 순서쌍(ordered pair) 뽑아내기 - .items()

>>> a.items()
dict_items([('name', 'pey'), ('phone', '010-9999-1234'), ('birth', '1118')])

items 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.

 

 

딕셔너리 초기화 하기 - .clear()

>>> a.clear()
>>> a
{}

clear 함수는 딕셔너리 안의 모든 요소를 삭제한다.

ㄴ싹 비워서 초기상태 , { } 이상태로 만든다

빈 리스트를 [ ], 빈 튜플을 ( )로 표현하는 것과 마찬가지로 빈 딕셔너리도 { }로 표현한다.

 

 

해당 Key가 딕셔너리 안에 있는지 조사하기 - 방법 1  키이름 in 딕셔너리 변수 이름

                                                                              - 방법 2  .has_key(키)               

                                                                              - 방법 3  .get()        

방법 1. 키 이름 in 딕셔너리 변수 이름

>>> a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False

키 이름 in 딕셔너리 변수이름 함수를 호출하면, 그 키가 딕셔너리에 실제로 있는 키인지 아닌지에 따라 참(True)또는  거짓(False)을 리턴한다. 

 

 

2 has_key()

 

 

3 .get()

ㄴ get()은 키를 이용하여, 그 키에 해당하는 값(Value)을 반환하는 함수이지만, get(키)일 때, 그 '키'가 해당 딕셔너리에 아직 없다면, None을 반환한다.

ㄴ이때, None대신에 다른걸 리턴하게 설정할 수도 있다.

-> 딕셔너리 변수 이름.get(키a, 0)

이렇게 하면, 키a가 해당 딕셔너리의 안에 없을 때, None 대신에 0을 리턴하게 된다.

 

 

 

-> 키(key)가 이미 딕셔너리에 있는지 아닌지를 검사하고 없다면(False) 키(Key)와 값(Value)을 추가하고, 이미 있다면 그 키(Key)에 해당하는 값(Value)의 값을 +1증가시키면 "asdffsdf"안에 a가 몇 번나오고, b가 몇 번 나오고... 이런식으로 문자열안에 각 알파벳이 몇 번씩 나왔는지, 어떤것들이 나왔는지를 알 수 있다.

 

(in을 활용하여 나온 알파벳을 확인하고 개수를 센다.

그리고 키를 통한 딕셔너리 값에 접근하기로 각 알파벳이 몇 번씩 등장했는지 알 수 있다.

그리고 키 뽑아내기로 어떤 알파벳들이 등장한 적 있는지만도 알 수 있다.)

 

ex_)  https://www.acmicpc.net/problem/1159

 

1159번: 농구 경기

상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작

www.acmicpc.net