Set, Dictionary, Hash

Jina·2020년 4월 17일
0

Session

목록 보기
8/12

Set

Set의 특징

  • 데이터를 비순차적(unordered)으로 저장할 수 있는 순열 자료구조 (collection)
  • 삽입(insertion) 순서대로 저장되지 않음 (특정한 순서를 기대할 수 없는 자료구조)
  • 동일한 값을 여러번 삽입 불가능
  • mutable

Set의 구조

Set에서 요소가 저장될 때 순서

  1. 저장할 요소 값의 hash값을 구함
  2. 해쉬값에 해당하는 공간(bucket)에 값을 저장
  • 저장하고자 하는 값의 해쉬값에 해당하는 bucket에 값을 저장하기 때문에 순서가 없음
    • 순서가 없기 때문에 indexing도 없음
  • 해쉬값 기반의 bucket에 저장하기 때문에 중복된 값을 저장할 수 없음
  • 해쉬값을 기반으로 저장하기 때문에 look up이 빠름
    • Look up : 특정 값을 포함하고 있는지를 확인 하는것
    • Set의 총 길이와 상관없이 단순히 해쉬값 계산 후 해당 bucket을 확인하면 됨

Hash

  • 단방향(one way) 암호화
  • 단방향이란 한번 암호화 하면 복호화가 불가능
  • Hash는 주로 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑할 때 사용됨

When To Use Set

  • 중복된 값을 골라내야 할 때
  • 빠른 look up을 해야 할 때
  • 순서는 상관 없을 때

Dictionary

Key-value 형태의 값을 저장할 수 있는 자료구조
실제 데이터 값과 데이터를 설명하는 key의 대응 관계를 표현할 때 유용

Dictionary의 특성

  • Set과 마찬가지로 특정 순서대로 데이터를 리턴하지 않음
  • Key의 값은 중복될 수 없음
    • 중복된 key가 있으면 먼저 있던 key와 value를 대체함
  • mutable

Dictionary의 내부 구조

Set와 비슷하게 key 값의 해쉬값을 구한 후 해쉬값에 속해있는 bucket에 값을 저장
set와 마찬가지로 순서가 없고 중복된 key 값은 허용 되지않음

When To Use Dictionary

  • 데이터베이스처럼 키와 값을 묶어서 데이터를 표현해야 할때 유용
  • 데이터베이스에서 읽어들인 값을 dictionary로 변환해서 사용 자주 함

0개의 댓글