[ Python ] Dictionary , Set Hash 이용해보자

2022. 9. 12. 23:34·Archive/Develop
목차
  1. Set 활용 Tip !
  2. Dictionary 활용 Tip !
  3. 번외 Sort Tip !
728x90
반응형

Dictionary 와 Set 은 Hash 테이블 구조를 가지고 있다.

그래서 삽입과 삭제, 탐색 하는 연산의 시간복잡도는 O(1) 이다.

 

 

 

 

Set 활용 Tip !

값을 찾기 위해 list 에서 in 을 사용하게 된다면, 해당 연산의 시간 복잡도는 O(n) 일 것이다.

하나의 데이터를 찾기 위해 최대 데이터 개수 n 만큼 순회를 해야한다는 것인데, 이를 set 을 이용하면 좋다!

 

 

간단한 테스트를 위해 주피터노트북을 활용했다.

 

아래 예시는 list 를 하나하나 순회하면서 데이터를 찾는 것이다.

아래 예제는 총 7초의 실행시간을 가졌다.

 

 

 

 

반면 set 을 이용한 아래의 예제는 약 4초의 실행시간을 가졌다.

 

 

 

이렇게 단순한 예제에서도 시간 차이가 꽤 나는 것을 확인할 수 있다.

 

앞으로 리스트 내에서 in 연산을 통하여 검색을 할 때는 set 을 활용하여 해보는 걸 추천한다.

 

 

 

 

 

Dictionary 활용 Tip !

 

딕셔너리에서 없는 키를 참조하면 에러가 난다.

만약 내가 딕셔너리에 item 을 추가하고 싶은데, 해당 키가 없으면 데이터를 추가하고

있으면 출력하려고 한다. 이때는 꼭 in 으로 키가 있는지 확인해야할까?

이를 방지하는 방법으로 setdefault 가 존재한다.

 

활용은 아래와 같이 한다.

 

_dict = {'a' : 1, 'b': 2}

print(_dict.setdefault('c', 0))

 

'c' 라는 키가 있다면 해당 키의 값을 반환하고, 없다면 0이라는 인자를 'c' 키의 값으로 설정한다.

 

 

추가로 이 메소드를 이용한 유사 dictionary 가 있다.

defaultdict 인데, 이는 아마 코테 준비해보신 분들이라면 한번쯤을 활용해봤을 collections 패키지 안에 존재한다.

 

궁금하신 분들은 defualtdict 키워드로 서칭해보시면 좋을 것 같다.

 

 

번외 Sort Tip !

 

초기 파이썬으로 코테를 준비할 때 정렬 시 사용하는 sort() 와 sorted() 가 헷갈렸었다.

그 둘의 차이는 사용하다보면 명확하다.

 

 

sort() 는 리스트를 내부적으로 정렬하는 메소드이다.

sorted() 는 컨테이너형 데이터를 정렬된 리스트로 변환해 돌려주는 함수이다.

 

 

자, 여기서 내가 리스트와 컨테이너형 데이터를 강조한 이유가 있다.

 

기본적으로 set, dictionary 와 같은 hash 테이블을 이용한 구조는 순서라는 개념이 존재하지 않는다.

따라서 내가 a =  {1, 2, 3, 4, 6, 5} 와 같이 선언 했어도

a.sort() 가 불가능하다는 것이다.

 

왜냐? sort 는 리스트를 정렬해주는 메소드이기에!

 

만약 내가 a set 을 정렬하고 싶다면 sorted(a) 식으로 해주는것이 옳은 방법이다.

 

print(sorted(a)) 를 해준다면, 출력은 리스트가 된다는 것도 유의해야한다.

 

 

 

728x90
반응형

'Archive > Develop' 카테고리의 다른 글

[ 모던 자바스크립트 스터디 ] 단축 평가  (0) 2022.09.14
[ 모던 자바스크립트 스터디 ] 암묵적 타입 변환 & 명시적 타입 변환  (0) 2022.09.14
[ 모던 자바스크립트 스터디 ] 레이블 문 , 타입 변환과 단축 평가  (0) 2022.09.12
[ 모던 자바스크립트 스터디 ] 자바스크립트 개요, 변수 호이스팅  (0) 2022.09.07
[ NestJS ] TypeORM 기존 테이블 -> entity 생성  (0) 2022.08.19
  1. Set 활용 Tip !
  2. Dictionary 활용 Tip !
  3. 번외 Sort Tip !
'Archive/Develop' 카테고리의 다른 글
  • [ 모던 자바스크립트 스터디 ] 단축 평가
  • [ 모던 자바스크립트 스터디 ] 암묵적 타입 변환 & 명시적 타입 변환
  • [ 모던 자바스크립트 스터디 ] 레이블 문 , 타입 변환과 단축 평가
  • [ 모던 자바스크립트 스터디 ] 자바스크립트 개요, 변수 호이스팅
코뮤(commu)
코뮤(commu)
코딩으로 커뮤니케이션하는 코뮤입니다 😎
  • 코뮤(commu)
    코뮤(COMMU)
    코뮤(commu)
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Archive
        • Hacking
        • Develop
        • ETC
      • Algorithm
      • DB&Infra
      • ETC
      • Node
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • IT지식보따리
    • IT가 맛있다
    • IT 천재
  • 공지사항

    • 배고픕니다
  • 인기 글

  • 태그

    백준
    보안뉴스
    백준 문제풀이
    Git
    Oracle
    Codeup
    파이썬 문제
    Django
    자바스크립트 API
    코드업 기초
    파이썬 알고리즘
    oracle db
    카카오 100일 프로젝트
    파이썬 기초 문제
    오라클
    장고
    C++
    파이썬 기초
    백준 풀이
    파이썬
    코드업
    javascript
    코드업 파이썬 기초 100제
    백준 파이썬
    파이썬 백준
    docker
    비박스
    Python
    자바스크립트 객체
    자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코뮤(commu)
[ Python ] Dictionary , Set Hash 이용해보자
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.