Coding/Jump to Python

Python - Dictionary 자료형 / 딕셔너리 추가 & 삭제 / 딕셔너리 관련 함수

빈그레 2023. 9. 8. 02:10

 

 


딕셔너리(Dictionary) 자료형

 

 

 

 

딕셔너리(Dictionary)란?

 

: 이름=홍길도 , 생일=몇월몇일 과 같이 대응 관계를 가진 자료형을 연관 배열 (Associative array) 또는 해시 (Hash)라고 한다. 파이썬에서는 이러한 자료형을 딕셔너리라고 한다. 

 

딕셔너리 자료형은 Key와 Value를 한 쌍으로 갖는 자료형이다.

예를 들어 key가 baseball이라면 value는 야구가 될 것이다.  딕셔너리 자료형은 리스트나 튜플처럼 순차적인 요솟값을 갖지 않고, key를 통해 value를 얻는다.즉, baseball의 뜻을 찾기 위하여 리스트나 튜플처럼 순차적으로 모두 검색하는 것이 아니라 baseball이라는 단어가 있는 곳만 딱 펼쳐보는 것이다.

 

 

딕셔너리는 어떻게 만들까


딕셔너리는 위와 같이 Key:Value의 형태로 이루어져 있으며 {} 안에 ',' 로 구분되어 있다.
위와 같이 작성하면 딕셔너리 dic의 정보는 콜론을 기준으로 좌측에 있는 값들은 Key가 되고 우측에 있는 값들은 Value가 된다.

Key에는 변하지 않는 값만 사용 가능하고, Value에는 변하는 값과 변하지 않는 값 모두 사용 가능하다.
Key와 Value에 다양한 type의 자료형을 쓸 수 있으나, Key는 고유한 값이어야 하기 때문에 list는 절대 올 수 없다.
그러나 튜플과 같이 그 값이 변하지 않는 것은 올 수있다.


*** 주의 사항
: 딕셔너리를 만들 때에 Key는 Key값이 중복되면 결국 더 뒤쪽의 것만 살아남는다.


 

 

 

딕셔너리 쌍 추가 / 삭제

 

- 딕셔너리 쌍 추가하기

a[key]='value'​

위와 같이 입력되면 기존 딕셔너리에 새로운 쌍이 추가된다.

key자리에 2가 들어가고 value자리에 ''b'가 들어가 a라는 딕셔너리에 1:a에 이어 콤마를 구분으로 2:'b'라는 새로운 쌍이 생겨났다.

딕셔너리에서 콤마를 기준으로 구분된 각 요소들은 서로 관계강 없으므로 자료형이나 순서에 대한 아무런 제약이 없다. 

 

 

- 딕셔너리 요소 삭제하기


del 함수를 이용하여 딕셔너리의 key를 입력하면  해당 key에 해당하는 key:value 쌍이 삭제된다.

 

 

 

Key를 사용하여 Value 얻기
리스트나 튜플은 요소의 값을 얻을 때 인덱싱이나 슬라이싱 기법들을 모두 사용 가능했지만, 딕셔너리는 각각의 Key와 Value를 연결하고 있는 것이 전부이기 때문에 Key값을 'a[Key]' 다음과 같이 넣어 value 값을 반환하는 것이 전부이다.



 


 

 


딕셔너리 함수들

 

 

 

 

 

-Key 리스트 만들기 (keys)
Key 자리에는 리스트가 들어올 수 없으나, 딕셔너리 변수에 있는 key들만을 뽑아 모아 리스트로 만들어 줄 수있다. 

key들의 list를 만들어주는 함수가 바로 'keys'이다. keys함수를 이용하면 dict_keys라는 객체가 반환된다.
하지만, dict_keys객체는 list 고유의 함수들을 수행할 수는 없다.

dict_keys를 진짜 리스트로 변환하려면 아래와 같이 객체를 list로 만들어주는 list함수를 사용하면 된다.

list(a.keys())
['name','phone','birth']



리스트이므로 for문에서 print했을 때,해당 인덱스 순서대로 출력된다.

 

 

Value 리스트 만들기 (values)

Key의 list를 만드는 것과 동일하게 하면 dict_values 객체가 반환된다.

 

 

 

Key,Value 쌍 얻기 (items)
items함수는 Key와 Value 쌍을 튜플로 묶은 값을 dict_itens 객체로 돌려준다.

 

 

Key:Value  쌍 모두 지우기 (clear)

cleaer함수를 이용하면 딕셔너리에 있는 쌍을 모두 삭제할 수 있다.
빈 리스트를 [ ], 빈 튜플을 ( )로 표현하는 것과 마찬가지로, 딕셔너리를 모두 삭제한 뒤 출력하면 { }로 표현된다.

 

 

 

Key로 Value값 얻기 (get)
딕셔너리 변수를 a[Key]와 같이 사용하여 value값을 바로 얻는 방법도 있지만, 함수를 통해 얻는 방법도 있다.

a.get(Key)​

 

위와 같이 get함수 파라미터에 Key를 넣고 딕셔너리 변수에 함수를 적용시키면 
해당 Key와 대응하는 value값이 반환된다.


a[Key]와 같이 함수 없이 바로 부르는 것은 존재하지 않는 Key를 입력하였을 때 오류가 나지만,
get함수는 존재하지 않는 Key에 대해서 None이라는 반환값을 갖는다.


'foo'가 존재하지 않는다면 None말고 'bar'를 출력해라!! 라는 뜻이다. 즉, 'bar'라는 default값을 설정해준 것이다.

 

 

 

 

해당 Key가 딕셔너리 안에 있는지 조사하기 (in)

in함수를 아래와 같이 작성했을 때, a에 'name'이 존재하면 True, 없으면 False를 반환한다.

'찾는 Key' in a