[자료구조] 4. Dictionary, Hash table

lilyoh·2020년 8월 10일
0

Dictionary (다른 언어에서는 hash map 이나 hash table 이라고 하기도 함) 는 Key-value 형태의 값을 저장할 수 있는 자료구조이다.

1. 특징

  • set 과 마찬가지로 데이터의 순서가 없다.
  • key 값은 중복될 수 없다. 만일 중복된 key 가 있으면 이미 있던 key 와 value 를 이후의 key 와 value 가 대체한다.
  • 수정 가능하다.
>>> my_dict = {1 : "one", "two" : 2, 3 : 3.0, 1: "one_one"}
>>> my_dict
{1: 'one_one', 'two': 2, 3: 3.0}
>>> for key, value in my_dict.items():
...     print(f"{key} : {value}")
...
1 : one_one
two : 2
3 : 3.0
>>> my_dict[1]
'one_one'
>>> my_dict.get("two")
2
>>> my_dict[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 5
>>> my_dict.get(5, 0)
0
>>> my_dict[7] = "Seven"
>>> my_dict
{1: 'one_one', 'two': 2, 3: 3.0, 7: 'Seven'}

2. 구조

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

3. 언제 사용할까?

  • 데이터베이스처럼 키와 값을 묶어서 데이터를 표현해야 할 때 유용하다.

  • 데이터베이스에서 읽어들인 값을 dictionary 로 변환해서 사용한다.

  • 자바스크립트에서 딕셔너리 만들기

// 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
let dictionary3 = Object({ "name":["Ryan","Lee"], "job":"sw engineer", "address":{"city":"seoul","zip_code":"1234"} });

0개의 댓글