키(key)와 값(value)를 이용해서 자료를 관리한다.
'{ }'를 선언하고, '키 : 값'의 형태로 아이템을 정의한다.
- key와 value에는 숫자, 문자, 논리형 뿐만 아니라 컨테이너 자료형도 올수 있다.
- 단, key에 immutable 값은 올수 있지만 mutable 값은 올수 없다.
참고 : [Python] immutable, mutable 객체
bloodType = {'짱구': 'AB', '철수': 'A', '유리': 'B', '훈이': 'A', '맹구': 'O'}
detailInfo1 = {'이름': '짱구', '나이': 5, '좋아 하는 것': '초코비'}
detailInfo2 = {'이름': '철수', '나이': 5, '좋아 하는 것': '공부'}
detailInfo3 = {'이름': '맹구', '나이': 5, '좋아 하는 것': '돌'}
childrenInfo = {1: detailInfo1, 2: detailInfo2, 3: detailInfo3}
print(childrenInfo)
💡result
{1: {'이름': '짱구', '나이': 5, '좋아 하는 것': '초코비'}, 2: {'이름': '철수', '나이': 5, '좋아 하는 것': '공부'}, 3: {'이름': '맹구', '나이': 5, '좋아 하는 것': '돌'}}
딕셔너리 키(key)를 이용해서 값(value)를 조회한다.
bloodType = {'b1': 'AB', 'b2': 'A', 'b3': 'B', 'b4': 'O'}
print(f'bloodType[\'b1\'] : {bloodType["b1"]}')
print(f'bloodType[\'b2\'] : {bloodType["b2"]}')
print(f'bloodType[\'b3\'] : {bloodType["b3"]}')
print(f'bloodType[\'b4\'] : {bloodType["b4"]}')
💡result
bloodType['b1'] : AB
bloodType['b2'] : A
bloodType['b3'] : B
bloodType['b4'] : O
존재하지 않는키를 이용한 조회 시 에러 발생
#에러 발생
print(f'bloodType[\'b4\'] : {bloodType["b5"]}')
❗print(f'bloodType[\'b4\'] : {bloodType["b5"]}')
KeyError: 'b5'
get(key)를 이용해서 값(value)를 조회할 수 있다 .
bloodType = {'b1': 'AB', 'b2': 'A', 'b3': 'B', 'b4': 'O'}
print(f'bloodType[\'b1\'] : {bloodType.get("b1")}')
print(f'bloodType[\'b2\'] : {bloodType.get("b2")}')
print(f'bloodType[\'b3\'] : {bloodType.get("b3")}')
print(f'bloodType[\'b4\'] : {bloodType.get("b4")}')
💡result
bloodType['b1'] : AB
bloodType['b2'] : A
bloodType['b3'] : B
bloodType['b4'] : O
❗get()은 존재하지 않는 key 값으로 value를 불러와도 에러가 발생하지 않는다.
# 에러 발생하지 않음
print(f'bloodType[\'b4\'] : {bloodType.get("b5")}')
💡result
bloodType['b4'] : None
' 딕셔너리이름[키(key)] = 값(value) ' 형태로 아이템을 추가한다.
myInfo = {}
myInfo['이름'] = 'YUN'
myInfo['전공'] = 'Computer'
myInfo['메일'] = 'YUN1@gmail.com'
myInfo['취미'] = ['독서', '유튜브', '벨로그']
print(f'MyInfo : {myInfo}')
myInfo['메일'] = 'YUN123@naver.com'
print(f'MyInfo : {myInfo}')
💡result
MyInfo : {'이름': 'YUN', '전공': 'Computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
MyInfo : {'이름': 'YUN', '전공': 'Computer', '메일': 'YUN123@naver.com', '취미': ['독서', '유튜브', '벨로그']}
factorials = {}
factorial = 1
for i in range(1, 11):
factorial = factorial * i
factorials[i] = factorial
print(factorials)
💡result
{1: 1, 2: 2, 3: 6, 4: 24, 5: 120, 6: 720, 7: 5040, 8: 40320, 9: 362880, 10: 3628800}
'딕셔너리 이름[키(key)] = 값(value) ' 형태로 아이템을 수정한다.
myInfo = {}
myInfo['이름'] = 'YUN'
myInfo['전공'] = 'Computer'
myInfo['메일'] = 'YUN1@gmail.com'
myInfo['취미'] = ['독서', '유튜브', '벨로그']
print(f'MyInfo : {myInfo}')
myInfo['메일'] = 'YUN123@naver.com'
print(f'MyInfo : {myInfo}')
💡result
MyInfo : {'이름': 'YUN', '전공': 'Computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
MyInfo : {'이름': 'YUN', '전공': 'Computer', '메일': 'YUN123@naver.com', '취미': ['독서', '유튜브', '벨로그']}
bodyInfo = {'이름': '짱구', '몸무게': 83, '신장': 1.8}
print(f'bodyInfo : {bodyInfo}')
for i in range(30):
bodyInfo['몸무게'] = bodyInfo['몸무게'] - 0.3
bodyInfo['신장'] = bodyInfo['신장'] + 0.001
bodyInfo['몸무게'] = round(bodyInfo['몸무게'], 2)
bodyInfo['신장'] = round(bodyInfo['신장'], 2)
myBMI = bodyInfo['몸무게'] / (bodyInfo['신장'] ** 2)
print('-' * 20 + '30일 후' + '-' * 20)
print(f'bodyInfo : {bodyInfo}')
print(f'myBMI : {round(myBMI, 2)}')
💡result
bodyInfo : {'이름': '짱구', '몸무게': 83, '신장': 1.8}
--------------------30일 후--------------------
bodyInfo : {'이름': '짱구', '몸무게': 74.0, '신장': 1.83}
myBMI : 22.1
전체 키(key)와 값(value)를 조회할 수 있다.
myInfo = {'이름': 'YUN', '전공': 'computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
keys = myInfo.keys()
print(keys)
print(type(keys))
values = myInfo.values()
print(values)
print(type(values))
items = myInfo.items()
print(items)
print(type(items))
💡result
dict_keys(['이름', '전공', '메일', '취미'])
<class 'dict_keys'>
dict_values(['YUN', 'computer', 'YUN1@gmail.com', ['독서', '유튜브', '벨로그']])
<class 'dict_values'>
dict_items([('이름', 'YUN'), ('전공', 'computer'), ('메일', 'YUN1@gmail.com'), ('취미', ['독서', '유튜브', '벨로그'])])
<class 'dict_items'>
리스트로 변환하기
keys = list(keys)
values = list(values)
items = list(items)
print(keys)
print(type(keys))
print(values)
print(type(values))
print(items)
print(type(items))
💡result
['이름', '전공', '메일', '취미']
<class 'list'>
['YUN', 'computer', 'YUN1@gmail.com', ['독서', '유튜브', '벨로그']]
<class 'list'>
[('이름', 'YUN'), ('전공', 'computer'), ('메일', 'YUN1@gmail.com'), ('취미', ['독서', '유튜브', '벨로그'])]
<class 'list'>
for문을 이용한 조회
myInfo = {'이름': 'YUN', '전공': 'computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
keys = myInfo.keys()
values = myInfo.values()
items = myInfo.items()
for key in keys:
print(f'key : {key}')
for value in values:
print(f'value : {value}')
for item in items:
print(f'item : {item}')
💡result
key : 이름
key : 전공
key : 메일
key : 취미
value : YUN
value : computer
value : YUN1@gmail.com
value : ['독서', '유튜브', '벨로그']
item : ('이름', 'YUN')
item : ('전공', 'computer')
item : ('메일', 'YUN1@gmail.com')
item : ('취미', ['독서', '유튜브', '벨로그'])
del과 key를 이용한 삭제
myInfo = {'이름': 'YUN', '전공': 'computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
print(f'myInfo : {myInfo}')
del myInfo['전공'] #삭제된 값 반환 안함
print(f'myInfo : {myInfo}')
💡result
myInfo : {'이름': 'YUN', '전공': 'computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
myInfo : {'이름': 'YUN', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
pop()은 삭제된 값을 반환한다.
myInfo = {'이름': 'YUN', '전공': 'computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
print(f'myInfo : {myInfo}')
deleteValue=myInfo.pop('메일')
print(f'delete value : {deleteValue}')
print(f'myInfo : {myInfo}')
💡result
myInfo : {'이름': 'YUN', '전공': 'computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
delete value : YUN1@gmail.com
myInfo : {'이름': 'YUN', '전공': 'computer', '취미': ['독서', '유튜브', '벨로그']}
myInfo = {'이름': 'YUN', '전공': 'computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
print('이름' in myInfo)
print('전공' in myInfo)
print('나이' in myInfo)
print('메일' in myInfo)
print('이름' not in myInfo)
print('전공' not in myInfo)
print('나이' not in myInfo)
print('메일' not in myInfo)
💡result
True
True
False
True
False
False
True
False
모든 아이템을 삭제한다.
myInfo = {'이름': 'YUN', '전공': 'computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
print(f'myInfo : {myInfo}')
print(f'myInfo.clear() : {myInfo.clear()}')
💡result
myInfo : {'이름': 'YUN', '전공': 'computer', '메일': 'YUN1@gmail.com', '취미': ['독서', '유튜브', '벨로그']}
myInfo.clear() : None