[파이썬 문법] 딕셔너리 (dictionary) 생성, 추가, 리스트를 딕셔너리로 변환, 조회
Language/Python

[파이썬 문법] 딕셔너리 (dictionary) 생성, 추가, 리스트를 딕셔너리로 변환, 조회

생성, 추가

딕셔너리(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 (리스트를 딕셔너리로 변환) 총 정리!!