참고자료: https://wikidocs.net/16
4. 딕셔너리
# 딕셔너리 = key 와 value 로 구성
# 연관 배열 = 해시 = 딕셔너리
# 리스트는 [] 로 튜플은 () 로 딕셔너리는 {} 로 감싼다.
# 기본형 : {Key1: Value1, Key2: Value2, Key3: Value3, ...}
dic = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
print(dic)
# value 에 리스트도 넣을 수 있다.
a = {'a': [1, 2, 3]}
# 딕셔너리 쌍 추가하기 ([key값])
a = {1: 'a'}
a[2] = 'b'
print(a)
{1: 'a', 2: 'b'}
a['name'] = 'pey'
print(a)
{1: 'a', 2: 'b', 'name': 'pey'}
a[3] = [1, 2, 3]
print(a)
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
# 딕셔너리 요소 삭제하기 ([key값]으로 선택)
del a[1]
print(a)
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}
# 여러값을 삭제할때 , 로 추가하여 한번에 삭제도 가능하다.
# 딕셔너리에서 key를 사용해 value 얻기
grade = {'pey': 10, 'julliet': 99}
print(grade['pey'])
10
print(grade['julliet'])
99
dic = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
print(dic['name'])
'pey'
print(dic['phone'])
'010-9999-1234'
print(dic['birth'])
'1118'
# 두개의 값을 한번에 불러오고 싶을 때 ,로 값 연결
print(dic['birth'], dic['phone'])
# 딕셔너리 만들 때 주의할 사항
# 1. 딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점에 주의해야 한다.
a = {1:'a', 1:'b'}
print(a)
{1: 'b'}
# 덮어써져서 마지막값으로만 출력됌
# 2. Key에 리스트는 쓸 수 없다는 것이다. 하지만 튜플은 Key로 쓸 수 있다.
# 딕셔너리의 Key로 쓸 수 있느냐, 없느냐는 Key가 변하는(mutable) 값인지, 변하지 않는(immutable) 값인지에 달려 있다.
# 리스트는 그 값이 변할 수 있기 때문에 Key로 쓸 수 없다.
# 딕셔너리 관련 함수 1 - keys() 함수 : key값만 출력
a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
print(a.keys())
# dict_keys(['name', 'phone', 'birth'])
print(list(a.keys())) # list로 변환 할 때
for k in a.keys():
print(k)
# 보통 for문과 같이 사용 된다.
# 딕셔너리 관련 함수 2 - values : value 값만 출력
print(a.values())
# dict_values(['pey', '010-9999-1234', '1118'])
# key, value 쌍 얻기 - items
print(a.items())
#dict_items([('name', 'pey'), ('phone', '010-9999-1234'), ('birth', '1118')])
# key:value값이 튜플에 담겨 출력 된다.
# key, value 쌍 모두 지우기 - clear
print(a.clear())
print(a)
# {} 빈 딕셔너리
# Key로 Value 얻기 - get
a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
print(a.get('name')) # print(a['name']) 와 결과값이 같다.
# 딕셔너리에 없는 값을 입력했을때 get 함수의 결과값은 none 이라고 뜨고, 뒤 예시는 에러로 출력된다.
'pey'
print(a.get('nokey', 'foo'))
# 딕셔너리 안에 key값에 없는 값을 입력했을 때 리턴받고 싶은 value의 값을 지정할 수 있다.
'foo'
# 해당 Key가 딕셔너리 안에 있는지 조사하기 - in
a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
print('name' in a)
True
print('email' in a)
False
# 리스트와 개념이 비슷하다고 생각해도 좋다.
a = [1,2,3] # 리스트: 인덱스번호0=1, 1=2, 2=3
a = {0:1, 1:2, 2:3} # 딕셔너리: key0=value1, key1=value2, key2=value3