주요 학습내용
딕셔너리(Dictionary)
1) 딕셔너리 조회
2) 딕셔너리 추가/수정
3) 전체 키(key)와 값(value) 조회
4) 아이템(item) 삭제
5) 기타 추가 기능(in/not in, clear())
dic = {'s1': '홍길동', 's2': '박찬호', 's3': '이용규', 's4': '박승철', 's5': '김지은'}
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']))
print('students[\'s5\'[0]]: {}'.format(students['s5'][0])) # value 값 중 0번째
print('students[\'s5\'[1]]: {}'.format(students['s5'][1])) # value 값 중 1번째
출력 결과 :
print('students[\'s6\']: {}'.format(students['s6']))
출력 결과 :
print('students[\'s6\']: {}'.format(students.get('s6')))
출력 결과 :
myInfo['이름'] = '홍길동'
myInfo['전공'] = 'computer'
myInfo['메일'] = 'gildong@gmail.com'
print(myInfo)
print('='*50)
# 변경 / 추가하려는 정보가 이미 있다면 변경됨
myInfo['메일'] = 'gildong@naver.com' # 기존 정보 변경 됨
myInfo['학년'] = 3 # 추가 됨
print(myInfo)
출력 결과 :
(메일 주소가 기존 gmail에서 naver로 바뀐 것을 확인할 수 있다)
(예제)
import math factorialDic = {} for i in range(11): if i == 0: factorialDic[i] = 1 else: # factorialDic[i] = math.factorial(i) # 공식 사용할 시 for j in range(1, i+1): factorialDic[i] = factorialDic[i-1]*j print(f'factorialDic: {factorialDic}')
출력 결과 :
memInfo = {'이름': '홍길동',
'메일': 'gildong@gmail.com',
'학년': 3,
'취미': ['농구', '게임']}
ks = memInfo.keys()
print(f'ks: {ks}')
print(f'ks type: {type(ks)}')
vs = memInfo.values()
print(f'vs: {vs}')
print(f'vs type: {type(vs)}')
print('-'*50)
출력 결과 :
(전체 키 & 값 조회 가능)
- 출력되는 형식을 보면 리스트와 비슷하게 [ ]로 출력되는 것을 볼 수 있으나, 실제 type은 dict_keys/values(완전한 리스트는 아님)
- 리스트로 변환하고 싶은 경우, type을 list로 지정 필요
# list로 변환 ks = list(ks) print(f'ks: {ks}') print(f'ks type: {type(ks)}') vs = list(vs) print(f'vs: {vs}') print(f'vs type: {type(vs)}') print('-'*50)
출력 결과 :
(type이 list로 변경된 것을 확인할 수 있다)
items = memInfo.items()
print('items: {}'.format(items))
print(f'items type : {type(items)}')
print('-'*50)
출력 결과 :
- 리스트 안에 개개의 아이템이 튜플로 저장된 것 처럼 보이지만, 실제 type은 dict_items
- 위와 같이 list형식으로 변경 원할 시, list로 type지정 해주면 변경 가능함
# for문을 이용한 조회
# 1)
for key in ks:
print(f'key: {key}')
for idx, key in enumerate(ks):
print(f'idx, key: {idx}, {key}')
print('='*50)
# 2)
for key in memInfo.keys():
print(f'{key}: {memInfo[key]}')
출력 결과 :
# 1) del
memInfo = {'이름': '홍길동',
'메일': 'gildong@gmail.com',
'학년': 3,
'취미': ['농구', '게임']}
print(len(memInfo))
# len()이용하여 아이템 개수 확인 가능
# 현 예시, 이름/메일/학년/취미 총 4개
del memInfo['메일']
print(memInfo)
print(len(memInfo))
print('='*50)
# 2) pop
memInfo.pop('이름')
print(memInfo)
print(len(memInfo))
출력 결과 :
리스트/튜플과 마찬가지로 in/not in을 이용하여 키 존재 유무 확인 가능
clear()를 이용하여 딕셔너리 안에 있는 모든 아이템 삭제 가능
(예제)
myInfo = {'이름': 'Hong Gil Dong', '나이': '30', '연락처': '010-1234-5678', '주민등록번호': '840315-1234567', '주소': '대한민국 서울'} print('myInfo: {}'.format(myInfo)) deleteItem = ['연락처', '주민등록번호'] for item in deleteItem: if item in myInfo: del myInfo[item] print('myInfo: {}'.format(myInfo)) `
출력 결과 :
(연락처와, 주민등록번호가 삭제된 것을 확인할 수 있다)
# 위 예제에서 clear()사용하여 딕셔너리 아이템 전체 삭제할 경우 myInfo.clear() print(myInfo)
출력 결과 :
(아이템이 모두 사라진 것을 확인할 수 있다)