
✔️ Dictionary(딕셔너리)
딕셔너리 자료형은 리스트와 튜플과 다르게 인덱싱과 슬라이싱을 사용할수가 없다.
이유는 딕셔너리는 순서를 가지고 있지 않기 때문.
그래서 특정 위치의 Value 값을 호출할 때 인덱싱과 슬라이싱 대신 변수[Key값] 라고 입력함.
※Key값이 숫자라면 인덱싱과 혼동될 수 있으니 유의!
ex) 변수[1] → '1'이라는 키값의 Value 반환
## dict (키를 이용하여 값을 저장하는 자료형)
## 정수형 인덱스가 아닌 키로 값을 저장하기 때문에 저장된 순서는 무의미
## key는 중복 불가, value는 중복 가능
d = dict()
print(d, type(d))
d = {'a': 1, "b": 2, 'c': 3}
print(d, type(d))
d = {'a': 1, "b": [1, 2, 3], (1, 2): 3} # key는 immutable, value는 mutable
print(d, type(d))
d = {'a': 1, "b": 2}
print(d)
d['a'] = 100 # 키로 접근해서 값을 수정하기가 용이
print(d)
d['c'] = 200 # 없으면 추가
print(d)
print(d['a'])
# print(d['f']) #없는 키는 참조 불가
for k in d:
print(k, d[k])
print(d.keys()) # key
print(d.values()) # value
print(d.items()) # key, value
for item in d.keys():
#print(item, d[item])
print(item, d.get(item))
print(d.get('a'))
print(d.get('z', 500)) # 없을 경우에는 기본값으로 불러오기 가능
# {} <class 'dict'>
# {'a': 1, 'b': 2, 'c': 3} <class 'dict'>
# {'a': 1, 'b': [1, 2, 3], (1, 2): 3} <class 'dict'>
# {'a': 1, 'b': 2}
# {'a': 100, 'b': 2}
# {'a': 100, 'b': 2, 'c': 200}
# 100
# a 100
# b 2
# c 200
# dict_keys(['a', 'b', 'c'])
# dict_values([100, 2, 200])
# dict_items([('a', 100), ('b', 2), ('c', 200)])
# a 100
# b 2
# c 200
# 100
# 500
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print(dic1.keys()) #딕셔너리에 있는 Key 값만 불러오기
#아래 결과값을 보면 'dict_keys'문구와 Key값이 같이 출력이 되는데
리스트형태로 변형하면 Key값들이 리스트 형태로 출력됩니다.
a=dic1.keys()
print(list(a))
##### result #####
dict_keys(['이름', '생일', 'address'])
['이름', '생일', 'address']
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print(dic1.values()) #딕셔너리에 있는 Value 값만 불러오기
print(list(dic1.values())) #리스트 형태로 호출
##### result #####
dict_values(['김사전', '0815', 'Seoul'])
['김사전', '0815', 'Seoul']
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print(dic1.items()) #key와 Value 값 모두 불러오기
print(list(dic1.items())) #리스트 형태로 호출
print(dic1) #전체를 호출하는 것과 items()으로 호출하는 것은 자료형태만 다름
##### result #####
dict_items([('이름', '김사전'), ('생일', '0815'), ('address','Seoul')])
↑ items() 함수를 사용하면 각 항목을 튜플 형태를 가진 리스트로 가져옵니다.
[('이름', '김사전'), ('생일', '0815'), ('address','Seoul')]
{'이름': '김사전', '생일': '0815', 'address':'Seoul'}
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
dic1.clear() #딕셔너리 안의 모든 요소가 삭제
print(dic1)
##### result #####
{} #빈 딕셔너리만 출력됩니다.
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print(dic1['이름']) #Key값으로 호출
print(dic1.get('이름')) #get 함수로 호출
#두 가지 방법 모두 동일한 결과가 출력됩니다.
#그런데 get() 함수를 사용하는 이유는
#값이 없을 때 None 값으로 확인하기 위해서입니다.
print(dic1.get('전화'))
#Key의 값을 불러오는데 해당하는 Key가 없는 경우 'None'이라고 호출
##### result #####
김사전
김사전
None
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print(dic1['전화']) #존재하지 않는 Key값을 호출하면 오류 메시지가 뜹니다.
##### result #####
Traceback (most recent call last):
File "main.py", line 64, in <module>
print(dic1['전화'])
KeyError: '전화'
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print(dic1.get('전화'))
print(dic1.get('전화','Key 없음'))
#key가 없다고 생각될 때 None이 아닌 특정 값으로 호출하고 싶다면
#get('key값','디폴트값') 으로 입력
##### result #####
None
Key 없음
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print('전화' in dic1) # dic1안에 '전화' Key가 있으면True, 없으면False가 출력
print('이름' in dic1)
##### result #####
False
True