
키(Key)와 값(Value)으로 이루어진 쌍을 저장해 자료를 관리하는 자료 구조이다.
딕셔너리는 유연하고 강력한 자료구조로, 데이터를 효율적으로 관리하고 사용할 수 있도록 도와준다.
딕셔너리는 다양한 데이터 유형을 값으로 가질 수 있다.
키는 변경불가능(immutable)한 데이터 유형이어야 한다.
Value(값)은 Key가 다르면 얼마든지 중복 가능하다.
중괄호{}를 사용하여 정의되며, 각 키-값 쌍은 콜론:으로 구분하고 요소는 콤마,로 구분한다.
students = {'s1':'홍길동', 's2':'박찬호', 's3':'이용규', 's4':'박승철', 's5':'김지은'}
memInfo = {'이름':'홍길동', '메일':'gildong@gmail.com', '학년':3, '취미':['농구', '게임']}
조회는 기본적으로 for문을 이용해 각 요소에 접근한다.
딕셔너리의 메서드와 함께 사용해 Key와 Value를 조회할 수 있다.
dict_object[Key]→ Value 조회
딕셔너리는 키를 이용해 값을 조회할 수 있다.
존재하지 않는 키를 사용해 값을 조회하면 Error가 발생한다.
students = {'s1':'홍길동', 's2':'박찬호', 's3':'이용규', 's4':'박승철', 's5':'김지은'}
print('students[\'s1\']:{}'.format(students['s1']))
print('students[\'s2\']:{}'.format(students['s2']))
print('students[\'s3\']:{}'.format(students['s3']))
print('students[\'s4\']:{}'.format(students['s4']))
print('students[\'s5\']:{}'.format(students['s5']))
# students['s1']:홍길동
# students['s2']:박찬호
# students['s3']:이용규
# students['s4']:박승철
# students['s5']:김지은
memInfo = {'이름':'홍길동', '취미':['농구', '게임', '여행']}
print('memInfo[\'이름\']:{}'.format(memInfo['이름']))
print('memInfo[\'취미\']:{}'.format(memInfo['취미']))
print('memInfo[\'취미[0]\']:{}'.format(memInfo['취미'][0]))
print('memInfo[\'취미[1]\']:{}'.format(memInfo['취미'][1]))
print('memInfo[\'취미[2]\']:{}'.format(memInfo['취미'][2]))
# memInfo['이름']:홍길동
# memInfo['취미']:['농구', '게임', '여행']
# memInfo['취미[0]']:농구
# memInfo['취미[1]']:게임
# memInfo['취미[2]']:여행
dict_object.get[__key]→ Value 조회
get() method로 값을 조회할 수 있다.
조회하려는 Dictionary 내에 Key 값이 없어도 에러가 발생하지 않는다. Key 값이 없으면 Default 값인 None을 반환한다.
students = {'s1':'홍길동', 's2':'박찬호', 's3':'이용규', 's4':'박승철', 's5':'김지은'}
print('students.get(\'s5\'): {}'.format(students.get('s5')))
print('students.get(\'s6\'): {}'.format(students.get('s6')))
# students.get('s5'): 김지은
# students.get('s6'): None
dict_object.keys()→ 전체 Key 조회
keys() method는 전체 Key 데이터를 리스트와 비슷한 자료 구조로 리턴해 준다.
memInfo = {'이름':'홍길동'
, '메일':'gildong@gmail.com'
, '학년':3
, '취미':['농구', '게임']}
ks = memInfo.keys()
print(f'keys : {ks}')
print(f'keys type : {type(ks)}')
# keys : dict_keys(['이름', '메일', '학년', '취미'])
# keys type : <class 'dict_keys'>
# ➡ 리스트와 비슷하지만 완전한 리스트는 아닌 자료형이다.
ks = list(ks)
print(f'keys : {ks}')
print(f'keys type : {type(ks)}')
# keys : ['이름', '메일', '학년', '취미']
# keys type : <class 'list'>
print(f'keys[0] : {ks[0]}') # keys[0] : 이름
print(f'keys[1] : {ks[1]}') # keys[1] : 메일
print(f'keys[2] : {ks[2]}') # keys[2] : 학년
print(f'keys[3] : {ks[3]}') # keys[3] : 취미
for문을 이용해 각 요소에 접근한다.
for key in memInfo.keys():
print(f'key: {key}')
# key: 이름
# key: 메일
# key: 학년
# key: 취미
for idx, key in enumerate(memInfo.keys()):
print(f'idx, key: {idx}, {key}')
# idx, key: 0, 이름
# idx, key: 1, 메일
# idx, key: 2, 학년
# idx, key: 3, 취미
dict_object.values()→ 전체 Value 조회
values() method는 전체 Value 데이터를 리스트와 비슷한 자료 구조로 리턴해 준다.
memInfo = {'이름':'홍길동'
, '메일':'gildong@gmail.com'
, '학년':3
, '취미':['농구', '게임']}
vs = memInfo.values()
print(f'values : {vs}')
print(f'values type : {type(vs)}')
# values : dict_values(['홍길동', 'gildong@gmail.com', 3, ['농구', '게임']])
# values type : <class 'dict_values'>
vs = list(vs)
print(f'values : {vs}')
print(f'values type : {type(vs)}')
# values : ['홍길동', 'gildong@gmail.com', 3, ['농구', '게임']]
# values type : <class 'list'>
print(f'values[0] : {vs[0]}') # values[0] : 홍길동
print(f'values[1] : {vs[1]}') # values[1] : gildong@gmail.com
print(f'values[2] : {vs[2]}') # values[2] : 3
print(f'values[3] : {vs[3]}') # values[3] : ['농구', '게임']
for문으로 각 요소에 접근한다.
for value in memInfo.values():
print(f'value: {value}')
# value: 홍길동
# value: gildong@gmail.com
# value: 3
# value: ['농구', '게임']
for idx, value in enumerate(memInfo.values()):
print(f'idx, value: {idx}, {value}')
# idx, value: 0, 홍길동
# idx, value: 1, gildong@gmail.com
# idx, value: 2, 3
# idx, value: 3, ['농구', '게임']
dict_object.items()→ 전체 Key와 Value 조회
items() method는 전체 (Key, Value) 쌍을 리스트와 비슷한 자료 구조로 리턴해 준다.
memInfo = {'이름':'홍길동'
, '메일':'gildong@gmail.com'
, '학년':3
, '취미':['농구', '게임']}
items = memInfo.items()
print(f'items : {items}')
print(f'items type : {type(items)}')
# items : dict_items([('이름', '홍길동'), ('메일', 'gildong@gmail.com')
# , ('학년', 3), ('취미', ['농구', '게임'])])
# items type : <class 'dict_items'>
items = list(items)
print(f'items : {items}')
print(f'items type : {type(items)}')
# items : [('이름', '홍길동'), ('메일', 'gildong@gmail.com')
# , ('학년', 3), ('취미', ['농구', '게임'])]
# items type : <class 'list'>
print(f'items[0] : {items[0]}')
print(f'items[1] : {items[1]}')
print(f'items[2] : {items[2]}')
print(f'items[3] : {items[3]}')
# items[0] : ('이름', '홍길동')
# items[1] : ('메일', 'gildong@gmail.com')
# items[2] : ('학년', 3)
# items[3] : ('취미', ['농구', '게임'])
for문으로 각 요소에 접근한다.
for item in memInfo.items():
print(f'item: {item}')
# item: ('이름', '홍길동')
# item: ('메일', 'gildong@gmail.com')
# item: ('학년', 3)
# item: ('취미', ['농구', '게임'])
for idx, item in enumerate(memInfo.items()):
print(f'idx, item: {idx}, {item}')
# idx, item: 0, ('이름', '홍길동')
# idx, item: 1, ('메일', 'gildong@gmail.com')
# idx, item: 2, ('학년', 3)
# idx, item: 3, ('취미', ['농구', '게임'])
dict_object[new_Key] = Value형태로 item 추가
myInfo = {}
myInfo['이름'] = '박경진'
myInfo['전공'] = 'computer'
myInfo['메일'] = 'jin@naver.com'
myInfo['학년'] = 3
myInfo['주소'] = '대한민국 서울'
myInfo['취미'] = ['요리', '여행']
print(f'myInfo : {myInfo}')
# myInfo : {'이름': '박경진', '전공': 'computer'
# , '메일': 'jin@naver.com', '학년': 3
# , '주소': '대한민국 서울', '취미': ['요리', '여행']}
dict_object[__key] = Value형태로 value를 수정
myInfo = {}
myInfo['이름'] = '박경진'
myInfo['전공'] = 'computer'
myInfo['메일'] = 'jin@naver.com'
myInfo['학년'] = 3
myInfo['주소'] = '대한민국 서울'
myInfo['취미'] = ['요리', '여행']
print(f'myInfo : {myInfo}')
# myInfo : {'이름': '박경진', '전공': 'computer'
# , '메일': 'jin@naver.com', '학년': 3
# , '주소': '대한민국 서울', '취미': ['요리', '여행']}
❕ 값 수정
myInfo['전공'] = 'sports'
myInfo['학년'] = '4'
print(f'myInfo : {myInfo}')
# myInfo : {'이름': '박경진', '전공': 'sports'
# , '메일': 'jin@naver.com', '학년': '4'
# , '주소': '대한민국 서울', '취미': ['요리', '여행']}
del dict_object[__key]→ Item(__key:value) 삭제
memInfo = { '이름':'홍길동'
, '메일':'gildong@gmail.com'
, '학년':3
, '취미':['농구', '게임']}
del memInfo['메일']
print(f'memInfo: {memInfo}')
# memInfo: {'이름': '홍길동', '학년': 3, '취미': ['농구', '게임']}
del memInfo['취미']
print(f'memInfo: {memInfo}')
# memInfo: {'이름': '홍길동', '학년': 3}
dict_object.pop(__key)→ Item(__key:value) 삭제
pop() 메서드는 요소를 삭제하면서 해당 키의 값을 반환한다. memInfo = { '이름':'홍길동'
, '메일':'gildong@gmail.com'
, '학년':3
, '취미':['농구', '게임']}
returnValue = memInfo.pop('이름')
print(f'memInfo: {memInfo}')
print(f'returnValue: {returnValue}')
print(f'returnValue type: {type(returnValue)}')
# memInfo: {'메일': 'gildong@gmail.com', '학년': 3, '취미': ['농구', '게임']}
# returnValue: 홍길동
# returnValue type: <class 'str'>
returnValue = memInfo.pop('취미')
print(f'memInfo: {memInfo}')
print(f'returnValue: {returnValue}')
print(f'returnValue type: {type(returnValue)}')
# memInfo: {'메일': 'gildong@gmail.com', '학년': 3}
# returnValue: ['농구', '게임']
# returnValue type: <class 'list'>
dict_object.clear()→ 모든 Item(전체) 삭제
memInfo = { '이름':'홍길동'
, '메일':'gildong@gmail.com'
, '학년':3
, '취미':['농구', '게임']}
memInfo.clear()
print('memInfo: {}'.format(memInfo))
# memInfo: {}