[python] 사전(dictionary), 해시(hash)

이도원·2022년 8월 24일
0

python 문법

목록 보기
4/7

1. 사전(dictionary) 정의 및 특징

키(key)와 값(value)으로 이루어진 여러 쌍으로 데이터를 담는다.
해시 테이블 자료 구조 기반(key값이 hashable 해야한다.)
가변 데이터 타입

2. 해시

해시(hash)란 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값
다른 객체는 다른 해시함수를 갖어야 함
같은 오브젝트가 일관성 있게, 같은 값을 가질 수 있도록 표식
비교를 위해 사용. / hash 후, 각 객체가 숫자로 나와, 같은 객체인지 다른객체인지 비교 가능
hashable object- Numeric, immutable container(int,bool, float, tuple, string등)
리스트라든가 셋, 딕셔너리와 같이 데이터 변경이 가능한 컨테이너은 hashable하지 않다.

3. 사전 생성,접근,갱신,삭제

빈 사전 생성 - d1=dict()
값 넣어 생성 - d2= {key:value} / d3={key:value, key:value}

setdefault(key, default(생략시None))

d1.setdefault(key,default) - key없으면 default값 넣으면서 생성 return default / key 있으면 return value
데이터 추가 및 갱신 - d1[key]=value
데이터 접근 - d1[key] // 결과값 > value

없는 key 값에 접근하면 KeyError 오류 발생
get 메서드 이용해 오류방지 가능
d1.get(key) -> 없으면 None 반환
d1.get(key, 기본값) -> 없으면 기본값 반환

데이터 삭제 - del d1[key]

4. 사전 데이터 순회

for 문 사용시 기본적으로 key값 만 얻어짐

#items()로 key,value 추출(tuple 형태)
for key ,val in d1.items():
	#key, value 활용

#안쓰고 순회
for key in d1:
	#value는 d1[key]로 접근

5. 사전 (key 유무, 병합)

key 존재하는지 확인 - key in d1 > 있으면 True 없으면 False
사전에 다른 데이터 사전 반영 - d1.update(d2) > d1에 d2 반영(데이터가 반영되면서 기본 사전에 있는 데이터가 변경)

6. 정렬

my_dict = {'c': 3, 'a': 1, 'b': 2, 'e': 1, 'd': 2}
#key 기준
sorted_dict = sorted(my_dict.items())	#[('a', 1), ('b', 2), ('c', 3), ('d', 2), ('e', 1)]
#value 기준
sorted_dict = sorted(my_dict.items(), key = lambda item: item[1])

공식문서

https://docs.python.org/3/library/stdtypes.html#dict

profile
studying

0개의 댓글