(TIL18) SET & DICTIONARY

SooHyung Kim·2020년 4월 17일
0

Today I learned

목록 보기
15/25

SET

  • 세트는 array, list처럼 순열 자료구조이나, 순서라는 개념이 존재하지 않음

    • 데이터를 비순차적으로 저장할 수 있는 순열 자료구조
    • 삽입 순서대로 저장되지 않아 특정한 순서를 기대할 수 없는 자료구조
    • 수정이 가능
    • 동일한 값을 여러번 삽입 불가능하며, 여러번 삽입될 경우 하나의 값만 저장
    • Fast Lookup이 필요할 때 주로 쓰임
  • 세트에서 요소들이 저장될 때 순서는 다음과 같음

    1. 저장할 요소의 값의 hash값을 구함
    2. 해쉬값에 해당하는 공간에 값을 저장
  • 세트는 저장하고자 하는 값의 해시값에 해당하는 공간에 값을 저장하기 때문에 순서가 없으며 따라서 인덱싱도 존재하지 않음

  • 해쉬값 기반의 공간에 저장하기 때문에 중복된 값을 저장할 수 없음

  • 해쉬값을 기반으로 저장하기 때문에 look-up이 굉장히 빠름

    Hash : 단방향 암호화

    • 한번 암호화하면 복호화가 안되며, 실제 값의 길이와 상관없이 hash 값은 일정한 hash값을 일정한 길이로 가짐, 따라서 hash는 주로 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑할 때 사용

세트는 언제 사용할까?

  • 중복된 값을 골라내야 할 때
  • 빠른 look-up을 해야 할 때
  • 순서는 상관이 없을 때
# 1. 동일한 값 중복 안됨
x = set(['wecode','wework','wecode'])
print(x)
>> ['wecode', 'wework']

# 2. 중복되지 않는 값은 추가 가능
x.add('weplay')
print(x)
>> ['wecode', 'wework', 'weplay']

# 3. 동일한 값 추가 불가능
x.add('weplay')
print(x)
>> ['wecode', 'wework']

Dictionary

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

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

  • Set와 비슷하게 key 값의 해쉬값을 구한 후 해쉬값에 속해 있는 bucket에 값을 저장

딕셔너리는 언제 사용할까?

  • 데이터베이스처럼 키와 값을 묶어서 데이터를 표현할 때 유용
# dictionary create 1
    dictionary1 = {'name':['Ryan','Lee'], 'job':'sw engineer', 'address': {'city':'seoul', 'zip_code':'1234'} }
    
    # dictionary create 2
    dictionary2 = {}
    dictionary2['name'] = ['Ryan', 'Lee']
    dictionary2['job'] = 'sw engineer'
    dictionary2['address'] = {'city':'seoul', 'zip_code':'1234'}
    
    # dictionary create 3
    dictionary3 = dict(name=['Ryan','Lee'], job='sw engineer', address={'city':'seoul','zip_code':'1234'})
    
    # dictionary create 4
    dictionary4 = dict([('name',['Ryan','Lee']), ('job','sw enginner'), ('address',{'city':'seoul','zip_code':'1234'})])
profile
Slow and steady win the race

0개의 댓글