생성, 추가
딕셔너리(dictionary)는 다음과 같은 방법으로 선언할 수 있다.
a = dict()
# or
a = {}
key와 value가 추가된 채로 생성할수도 있다.
a = {'key1':'value1', 'key2':'value2'}
별도로 value3이란 값을 추가할 수 있다.
a['key3'] = 'value3'
리스트를 딕셔너리로 변환
딕셔너리에 key값과 value값을 추가한다. 리스트의 원소를 key로 추가했다.
alpha = ['a', 'b', 'c']
a = {}
for letter in alpha:
a[letter] = 0
print(a)
---
# out:
{'a': 0, 'b': 0, 'c': 0}
딕셔너리 컴프리헨션으로 값을 추가할 수 있다.
(리스트 컴프리헨션과 같은 방법이다.) 2021.06.14 - [Language/Python] - [파이썬 문법] 리스트 컴프리헨션 List Comprehension
alpha = ['a', 'b', 'c']
dict = {letter : 0 for letter in alpha}
print(dict)
---
# out:
{'a': 0, 'b': 0, 'c': 0}
value를 증가하도록 만들 수 있다.
alpha = ['a', 'b', 'c']
dict = {letter : i for i, letter in enumerate(alpha)}
print(dict)
---
# out:
{'a': 0, 'b': 1, 'c': 2}
dict.fromkeys()를 사용할 수 있다. 0 위치에 아무 것도 적지 않으면 value는 None이 된다.
alpha = ['a', 'b', 'c']
dict = dict.fromkeys(alpha, 0)
print(dict)
---
{'a': 0, 'b': 0, 'c': 0}
리스트의 원소를 value로 추가할 수 있다.
alpha = ['a', 'b', 'c']
dict = {i : alpha[i] for i in range(len(alpha))}
print(dict)
---
# out:
{0: 'a', 1: 'b', 2: 'c'}
조회
딕셔너리는 키를 지정하면 값을 조회할 수 있다.
a['key1']
-----
# 결과
'value1'
딕셔너리에서는 존재하지 않는 키 key4 를 조회하면 KeyError가 발생한다. 다음과 같이 try구문으로 예외 처리를 한다.
try:
print(a['key4'])
except KeyError:
print('존재하지 않는 키')
이 때, collections의 디폴트 딕셔너리로 생성하게 되면, 존재하지 않는 키를 조회해도 에러가 발생하지 않는다.
- 초기 값으로 int를 주어 결과값이 0이 나왔다. (str으로 주면 빈 문자열이 출력된다.)
import collections
dict = collections.defaultdict(int)
dict['key1'] = 1
print(dict['key2'])
---
# out:
0
for 반복문으로 key와 value를 조회할 수 있다.
for k,v in a.items():
print(k,v)
같은 방법으로 key, value, key and value를 조회할 수 있다.
*을 사용해 언패킹하면 각 key와 value에 해당하는 값만 조회할 수 있다.
alpha = ['a', 'b', 'c']
a = {}
for letter in alpha:
a[letter] = 0
print(a.keys())
print(a.values())
print(a.items())
print()
print(*a.keys())
print(*a.values())
print(*a.items())
---
# out:
dict_keys(['a', 'b', 'c'])
dict_values([0, 0, 0])
dict_items([('a', 0), ('b', 0), ('c', 0)])
a b c
0 0 0
('a', 0) ('b', 0) ('c', 0)
Reference :책 <파이썬 알고리즘 인터뷰>, [python] List to Dict (리스트를 딕셔너리로 변환) 총 정리!!