Dictionary
- 인덱스를 숫자가 아닌 문자열, 튜플을 사용하려 할 때
- 빠른 접근/탐색이 필요할 때
- 집계가 필요할 때 (원소의 개수를 세는 문제)
Dictionary와 list의 시간 복잡도 차이
Operation | Dictionary | List |
Get Item | O(1) | O(1) |
Insert Item | O(1) | O(1) ~ O(N) |
Update Item | O(1) | O(1) |
Delete Item | O(1) | O(1) ~ O(N) |
Search Item | O(1) | O(N) |
- 원소를 넣거나 삭제, 찾는 일이 많을 때에는 딕셔너리를 사용
Dictionary 생성
# 빈딕셔너리 생성
dict1 = {} # {}
dict2 = dict() # {}
Dictionary 원소 가져오기
# [] 기호 사용해 원소 가져오기
dict = {'a': 1, 'b': 2, 3: 5}
dict['b'] # 2
# get 메소드를 아용해 원소 가져오기
dict = {'a': 1, 'b': 2}
dict.get('a', 0) # 1
dict.get('c', 0) # 0
Dictionary 값 저장, 업데이트
# 값 집어넣기
dict = {'a': 300, 'b': 180}
dict['c'] = 100
# {'a': 300, 'b': 180, 'c': 100}
# 값 수정하기
dict = {'a': 300, 'b': 180}
dict['a'] = 500
# {'a': 500, 'b': 180}
Dictionary 특정 키 삭제
# del 이용하기 - 키가 있는 경우
dict = {'a': 300, 'b': 180}
del dict['a']
# {'b': 180}
# pop 이용하기 - 키가 있는 경우 대응하는 value 반환
my_dict = {'a': 300, 'b': 180}
my_dict.pop('b', 180) # 300
# pop 이용하기 - 키가 없는 경우 대응하는 default 반환
my_dict = {'a': 300, 'b': 180}
my_dict.pop('c', 180) # 180
Dictionary for문 조회
# key로만 순회
dict = {'a': 300, 'b': 180}
for key in dict:
print(key)
# a
# b
# key-value 동시 순회
dict = {'a': 300, 'b': 180}
for key, value in dict.items():
print(key, value)
# a 300
# b 180
특정 key가 딕셔너리에 있는지 없는지 조회할 때 - in 사용
dict = {'a': 300, 'b': 180}
print("a" in dict) #True
print("a" not in dict) # False
key 또는 value만 뽑아내는 방법
# key를 extract - keys 사용
my_dict = {'a': 300, 'b': 180}
my_dict.keys() # dict_keys(['a', 'b'])
# value를 extract - values 사용
my_dict = {'a': 300, 'b': 180}
my_dict.values() # dict_values([300, 180])
# key, value 쌍을 extract - items 사용
my_dict = {'a': 300, 'b': 180}
my_dict.items() # dict_items([('a', 300), ('b', 180)])
참고 블로그:
[Python 자료구조] Hash(해시)
파이썬에서 해시(Hash)는 어떻게 구현할 수 있을까요!? 파이썬에서는 Dictionary 라는 자료구조를 통해 해시를 제공합니다. 그리고 Dictionary는 dict클래스에 구현되어있습니다! 해시 언제 사용하면 좋
yunaaaas.tistory.com
'CS > 알고리즘' 카테고리의 다른 글
힙과 힙 정렬 (2) | 2023.09.19 |
---|---|
우선순위 큐 (0) | 2023.09.03 |
[프로그래머스] 그리디 - 큰 수 만들기 (0) | 2023.06.27 |
[Python] sys.stdin.readline().strip() (0) | 2023.06.24 |
[이코테] 다이나믹 프로그래밍 - 평범한 배낭 (0) | 2023.06.08 |
Dictionary
- 인덱스를 숫자가 아닌 문자열, 튜플을 사용하려 할 때
- 빠른 접근/탐색이 필요할 때
- 집계가 필요할 때 (원소의 개수를 세는 문제)
Dictionary와 list의 시간 복잡도 차이
Operation | Dictionary | List |
Get Item | O(1) | O(1) |
Insert Item | O(1) | O(1) ~ O(N) |
Update Item | O(1) | O(1) |
Delete Item | O(1) | O(1) ~ O(N) |
Search Item | O(1) | O(N) |
- 원소를 넣거나 삭제, 찾는 일이 많을 때에는 딕셔너리를 사용
Dictionary 생성
# 빈딕셔너리 생성
dict1 = {} # {}
dict2 = dict() # {}
Dictionary 원소 가져오기
# [] 기호 사용해 원소 가져오기
dict = {'a': 1, 'b': 2, 3: 5}
dict['b'] # 2
# get 메소드를 아용해 원소 가져오기
dict = {'a': 1, 'b': 2}
dict.get('a', 0) # 1
dict.get('c', 0) # 0
Dictionary 값 저장, 업데이트
# 값 집어넣기
dict = {'a': 300, 'b': 180}
dict['c'] = 100
# {'a': 300, 'b': 180, 'c': 100}
# 값 수정하기
dict = {'a': 300, 'b': 180}
dict['a'] = 500
# {'a': 500, 'b': 180}
Dictionary 특정 키 삭제
# del 이용하기 - 키가 있는 경우
dict = {'a': 300, 'b': 180}
del dict['a']
# {'b': 180}
# pop 이용하기 - 키가 있는 경우 대응하는 value 반환
my_dict = {'a': 300, 'b': 180}
my_dict.pop('b', 180) # 300
# pop 이용하기 - 키가 없는 경우 대응하는 default 반환
my_dict = {'a': 300, 'b': 180}
my_dict.pop('c', 180) # 180
Dictionary for문 조회
# key로만 순회
dict = {'a': 300, 'b': 180}
for key in dict:
print(key)
# a
# b
# key-value 동시 순회
dict = {'a': 300, 'b': 180}
for key, value in dict.items():
print(key, value)
# a 300
# b 180
특정 key가 딕셔너리에 있는지 없는지 조회할 때 - in 사용
dict = {'a': 300, 'b': 180}
print("a" in dict) #True
print("a" not in dict) # False
key 또는 value만 뽑아내는 방법
# key를 extract - keys 사용
my_dict = {'a': 300, 'b': 180}
my_dict.keys() # dict_keys(['a', 'b'])
# value를 extract - values 사용
my_dict = {'a': 300, 'b': 180}
my_dict.values() # dict_values([300, 180])
# key, value 쌍을 extract - items 사용
my_dict = {'a': 300, 'b': 180}
my_dict.items() # dict_items([('a', 300), ('b', 180)])
참고 블로그:
[Python 자료구조] Hash(해시)
파이썬에서 해시(Hash)는 어떻게 구현할 수 있을까요!? 파이썬에서는 Dictionary 라는 자료구조를 통해 해시를 제공합니다. 그리고 Dictionary는 dict클래스에 구현되어있습니다! 해시 언제 사용하면 좋
yunaaaas.tistory.com
'CS > 알고리즘' 카테고리의 다른 글
힙과 힙 정렬 (2) | 2023.09.19 |
---|---|
우선순위 큐 (0) | 2023.09.03 |
[프로그래머스] 그리디 - 큰 수 만들기 (0) | 2023.06.27 |
[Python] sys.stdin.readline().strip() (0) | 2023.06.24 |
[이코테] 다이나믹 프로그래밍 - 평범한 배낭 (0) | 2023.06.08 |