자료구조(파이썬) - 딕셔너리

이상해씨·2021년 10월 1일
0

자료구조, 알고리즘

목록 보기
13/20
post-custom-banner

◾딕셔너리

  • 딕셔너리(Dictionary) : 키(key)와 값(value)를 이용해 자료 관리
    • key : 's1', 's2', 's3, 's4
    • value : '홍길동', '박찬호', '이용규', '박승철'
    • 키는 중복 불가, 값은 중복 가능
    • 선언 : {키 : 값}
    • key, value는 숫자, 문자열, 논리형 뿐 아니라 컨테이너 자료형도 가능
    • key : immutable 값은 가능하지만, mutable 값은 올 수 없다.
# 딕셔너리
students = {'s1' : '홍길동', 's2' : '박찬호', 's3' : '이용규', 's4' : '박승철',}
print(students)

1. 조회

  • key를 이용한 조회
# 조회
students = {'s1' : '홍길동', 's2' : '박찬호', 's3' : '이용규', 's4' : '박승철'}
print(students)
print(students['s1'])
print(students['s4'])
# 에러 : 존재하지 않는 키 조회(KeyError)
# print(students['s5'])
  • get(key) : key에 해당하는 value 조회, key가 존재하지 않으면 None 반환
    • 키가 없어도 에러가 발생하지 않는다.
students = {'s1' : '홍길동', 's2' : '박찬호', 's3' : '이용규', 's4' : '박승철'}
print(students)
print(students.get('s1'))
print(students.get('s4'))
print(students.get('s5'))

2. 추가

  • 딕셔너리[키]=값 : 해당하는 키가 없다면 값을 쌍으로 하는 형태로 추가하고, 키가 있다면 값을 변경한다.
# 딕셔너리 추가
students = {'s1' : '홍길동', 's2' : '박찬호', 's3' : '이용규', 's4' : '박승철'}
print(students)

# 추가
students['s5'] = '강호동'
print(students)

3. 수정

  • 딕셔너리[키] = 값 : 이미 추가된 키를 사용하여 해당 키의 값을 변경할 수 있다.
# 딕셔너리 수정
students = {'s1' : '홍길동', 's2' : '박찬호', 's3' : '이용규', 's4' : '박승철'}
print(students)

# 수정
students['s4'] = '강호동'
print(students)

◾조회 함수

  • keys() : 딕셔너리의 키 값 반환
memInfo = {'이름':"홍길동", "메일":'gildong@gmila.com', '학년':3, '취미':['농구', '게임']}
ks = memInfo.keys()
print('ks : {}'.format(ks))
print('type : {}'.format(type(ks)))
  • values() : 딕셔너리의 value 반환
memInfo = {'이름':"홍길동", "메일":'gildong@gmila.com', '학년':3, '취미':['농구', '게임']}
vs = memInfo.values()
print('vs : {}'.format(vs))
print('type : {}'.format(type(vs)))
  • items() : 딕셔너리의 키와 값 쌍을 튜플 형태로 반환
memInfo = {'이름':"홍길동", "메일":'gildong@gmila.com', '학년':3, '취미':['농구', '게임']}
items = memInfo.items()
print('items : {}'.format(items))
print('type : {}'.format(type(items)))
  • dict_keys, dict_values, dict_items 타입으로 Iterable 객체이다.
    • 반복 가능 객체이기 때문에 for..in..에 사용 가능
    • keys(), values(), items()는 list, tuple로 변환 가능
ks = list(ks)
print(ks)
print(type(ks))

vs = list(vs)
print(vs)
print(type(vs))

items = list(items)
print(items)
print(type(items))
  • for문 조회
# for문을 이용한 조회
for key in memInfo.keys():
    print('key : {}'.format(key))

for idx, key in enumerate(memInfo.keys()):
    print('idx, key : {}, {}'.format(idx, key))

◾딕셔너리 삭제

  • del 키워드 : del 딕셔너리[키]로 해당 아이템 삭제
# 딕셔너리 삭제
memInfo = {'이름':"홍길동", "메일":'gildong@gmila.com', '학년':3, '취미':['농구', '게임']}
print(memInfo)

del memInfo['메일']
print(memInfo)

del memInfo['취미']
print(memInfo)
  • pop(키) : 해당 키를 삭제하며 값 반환
# 딕셔너리 삭제
memInfo = {'이름':"홍길동", "메일":'gildong@gmila.com', '학년':3, '취미':['농구', '게임']}
print(memInfo)

returnValue = memInfo.pop('메일')
print(memInfo)
print(returnValue)
print(type(returnValue))

returnValue = memInfo.pop('학년')
print(memInfo)
print(returnValue)
print(type(returnValue))

◾딕셔너리 기능

  • 키의 존재 유/무 판단
    • in : 키가 존재하는지
    • not in : 키가 존재하지 않는지
# 키 유/무 판단
memInfo = {
	'이름' : '홍길동', 
    '메일' : 'gildong@gmail.com', 
    '학년' : 3, 
    '취미' : ['농구', '게임']
}

print('이름' in memInfo)
print('메일' in memInfo)
print('name' in memInfo)
print('mail' in memInfo)

print('이름' not in memInfo)
print('메일' not in memInfo)
print('name' not in memInfo)
print('mail' not in memInfo)
  • len() : 딕셔너리의 길이(아이템 개수)
# len()
memInfo = {
	'이름' : '홍길동', 
    '메일' : 'gildong@gmail.com', 
    '학년' : 3, 
    '취미' : ['농구', '게임']
}

print('len(memInfo) : {}'.format(len(memInfo)))
  • clear() : 딕셔너리의 모든 아이템 삭제, 딕셔너리 객체는 삭제되지 않는다.
# clear()
memInfo = {
	'이름' : '홍길동', 
    '메일' : 'gildong@gmail.com', 
    '학년' : 3, 
    '취미' : ['농구', '게임']
}
print(memInfo)

memInfo.clear()
print(memInfo)
profile
후라이드 치킨
post-custom-banner

0개의 댓글