본문 바로가기

코딩/파이썬

컬렉션 타입 - 딕셔너리

딕셔너리

: 키-값(key-value) 쌍을 저장하는 변경가능한!!(mutable) 컬렉션,

 

'{키: 값}'

이러한 형식으로 이루어져있다!!!

 

여기서,

키는 중복이 되지 않고,

값은 중복이 가능하다!!

는 점을

유의해둘 필요가 있다.

 

그리고,

키 값은 어떠한 자료형이 들어가도 상관이 없는데~

그 이유는

키 부분에 set이 들어가있기 때문!

 

또한,

dict1 = {1: 'flower'} # 추가
print(dict1)

dict1[100] = 'fruit' # 추가
print(dict1)

dict1[50] = 'food' # 추가
print(dict1)

dict1[100] = 'fish' # 수정
print(dict1)

del dict[100] # 삭제
print(dict1)

 

{1: 'flower'}

{1: 'flower', 100: 'fruit'}

{1: 'flower', 100: 'fruit', 50: 'food'}

{1: 'flower', 100: 'fish', 50: 'food'}

{1: 'flower', 50: 'food'}

 

이렇게 추가, 수정, 삭제까지 가능하다는 점을 알 수 있다.

 

dict2 = {'name': '김뽀삐', 'age': 30, 'streotype': 'O'}
print(dict2)

dict2['age'] = 20 # 수정
print(dict2)

dict2['gender'] = 'female' # 추가
print(dict2)

dict2['점수'] = [70, 90, 100] # 추가
print(dict2)

# dict2[[1, 2, 3]] = [['하나', '둘', '셋']] #TypeError: unhashable type: 'list' 불변의 값이라 list 못 씀

dict2[(1, 2, 3)] = ['하나', '둘', '셋'] #튜플은 가능
print(dict2)

dict2['과목'] = {'국어': '상', '수학':'하', '영어':'중'} # 딕셔너리 추가 가능
print(dict2)

 

{'name': '김뽀삐', 'age': 30, 'streotype': 'O'}

{'name': '김뽀삐', 'age': 20, 'streotype': 'O'}

{'name': '김뽀삐', 'age': 20, 'streotype': 'O', 'gender': 'female'}

{'name': '김뽀삐', 'age': 20, 'streotype': 'O', 'gender': 'female', '점수': [70, 90, 100]}

{'name': '김뽀삐', 'age': 20, 'streotype': 'O', 'gender': 'female', '점수': [70, 90, 100], (1, 2, 3) : ['하나', '둘', '셋']}

{'name': '김뽀삐', 'age': 20, 'streotype': 'O', 'gender': 'female', '점수': [70, 90, 100], (1, 2, 3) : ['하나', '둘', '셋'], '과목' : {'국어': '상', '수학':'하', '영어':'중'}}

 

리스트는 불가, 

튜플, 딕셔너리 추가가능하다는 점을 알 수 있다.

 

딕셔너리에 사용가능한 함수를 알아보면,

 

dict3 = {'name': '김뽀삐', 'age': 30, 'streotype': 'O'}
print(len(dict3))

 

3

 

- keys() : 딕셔너리의 모든 키를 반환

print(dict3.keys())

 

dict_keys(['name', 'age', 'streotype'])

 

- values() : 딕셔너리의 모든 값을 반환

print(dict3.values())

 

dict_values(['김뽀삐', 30, 'O'])

 

- items(): 딕셔너리의 모든 키-값을 쌍(튜플)으로 반환

print(dict3.items())

 

dict_items([('name','김뽀삐'), ('age', 30), ('streotype', 'O')])

 

- get() : 특정 키에 대한 값을 반환, 만약 키가 딕셔너리에 없으면 None을 반환

(None을 대신해서 특정 값을 설정할 수 있다)

dict3 = {'name': '김뽀삐', 'age': 30, 'streotype': 'O'}
print(dict3['age']))
# print(dict3['score']) # KeyError: 'score'

print(dict3.get('age'))
print(dict3.get('score')) # None
print(dict3.get('score', '점수를 알 수 없음'))
print(dict3.get('age', '나이를 알 수 없음'))

30

30

None

점수를 알 수 없음

30

 

-pop() : 특정 키에 대한 값을 제거하고 그 값을 반환, 키가 없다면 에러

dict3 = {'name': '김뽀삐', 'age': 30, 'streotype': 'O'}
print(dict3)

temp = dict3.pop('streaotype') # 키는 저장하지 않음, value 값만 추출
print(dict3)
print(temp)
print(type(temp))

 

dict3 = {'name': '김뽀삐', 'age': 30, 'streotype': 'O'}

dict3 = {'name': '김뽀삐', 'age': 30}

O

<class 'str'>

 

- in() : 딕셔너리에 특정 키가 있는지 확인

dict3 = {'name': '김뽀삐', 'age': 30, 'streotype': 'O'}

print('streotype' in dict3)
print('score' in dict3)

 

 

True

False

'코딩 > 파이썬' 카테고리의 다른 글

제어문 - 조건문  (0) 2024.03.14
파이썬 연산자  (0) 2024.03.14
컬렉션 타입 - 세트  (0) 2024.03.14
파이썬 컬렉션 타입, 튜플  (0) 2024.03.13
파이썬 컬렉션 타입, 리스트  (0) 2024.03.13