TIL - Data Structure(자료구조) 2

KDG·2020년 6월 15일
0

1. set(세트)

  • 데이터를 비순차적으로 저장하는 순열 자료구조

    ** 순열 : n개의 원소에서 r개를 골라 나열하는 방법

  • 요소를 추가한 순서대로 저장되지 않는다.

  • 수정 가능

  • 동일한 값을 여러개 넣는것이 불가능하다. 중복된 값이 있으면 최근에 들어온 값으로 대체된다.

  • set 에서 요소들이 저장될 때 순서

    1. 저장할 요소 값의 hash 값을 구한다.
    2. hash에 해당되는 공간(bucket)에 값을 저장한다.
    • set는 저장하고자 하는 값의 hash값에 해당하는 bucket에 값을 저장하기 때문에 순서가 없다.
    • hash값 기반의 bucket에 저장하기 때문에 중복된 값을 저장할 수 없다.
    • hash값을 기반으로 저장하기 때문에 look up(특정 값을 포함하고 있는지 확인 하는것)이 굉장히 빠르다.

Set 수학집합연산

  • union, | : 합집합. 두 세트를 합친다(중복은 제거)
    intersection, & : 교집합. 두 세트에 같은 값만 남긴다.
    difference, '-' :
    set 3 = set1 - set2 => set1요소에서 set2요소중 겹치는것을 없앤다.
    clear : set요소를 전부지운다.

Hash(해쉬)

  • 단방향 암호화, 입력 데이터를 반환하여 원본데이터로 복호화할 수 없도록 하는 과정
    ** 복호화(decryption) : 암호화와 반대되는 개념. 부호화(encoding)된 데이처를 부호(code)화 되기 전 형태로 바꾸어 사람이 읽을 수 있는 형태로 되돌려놓는 것

2. Dictionary(딕셔너리)

  • Key : value 형태의 값을 저장할 수 있는 자료구조
  • set처럼 특정 순서대로 데이터를 리턴하지 않음
  • key 값은 중복될 수 없다. 만약 중복된 key값이 있으면 새로운 value값으로 대체된다.
  • 수정가능
  • set처럼 key값의 hash값을 구한 후 hash값에 속해있는 buchket에 값을 저장
  • 그래서 순서가 없고 중복된 값 허용X
# 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'})])
# # 튜플로 받아온 정보로 키와 값을 만든다.

네개 다 아래와 같은 결과가 나온다.
dictionary1 = {'name':['Ryan','Lee'], 'job':'sw engineer', 'address': {'city':'seoul', 'zip_code':'1234'} }

0개의 댓글