Python 딕셔너리 (Dictionary)

파이썬에 내장된 또 다른 자료형으로 딕셔너리가 있습니다.

리스트나 튜플과 같은 다른 시퀀스형이 숫자로 인덱싱되는 것과 달리 딕셔너리는 ‘키 (key)’로 인덱싱됩니다.

파이썬에서 딕셔너리 자료형을 다루는 다양한 방법에 대해 소개합니다.


딕셔너리 만들기

아래에 간단한 딕셔너리의 예가 있습니다. 중괄호 (curly bracket, {}) 안에 키와 값의 쌍을 나열해줍니다.

dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {
  'name': 'Henry',
  'age': 24,
  'height': 183.4
}

print(dict1)
print(dict2)
{'c': 3, 'a': 1, 'b': 2}
{'age': 24, 'name': 'Henry', 'height': 183.4}

dict1, dict2라는 두 개의 딕셔너리를 만들었습니다.

출력을 해보면 알 수 있듯이, 딕셔너리는 시퀀스 자료형이 아니기 때문에 순서가 없습니다.



딕셔너리 인덱싱

딕셔너리를 사용할 때, 딕셔너리의 키를 이용해서 값을 추출하고, 변경하고, 저장하는 일을 주로 하게 됩니다.

print(dict2['name'])
print(dict2['age'])
print(dict2['height'])
Henry
24
183.4

dict2의 ‘키’인 ‘name’, ‘age’, ‘height’를 이용해서 ‘값’ ‘Henry’, 24, 183.4에 접근했습니다.


print(dict2.get('name'))
print(dict2.get('age'))
print(dict2.get('height'))
Henry
24
183.4

또는 get()을 이용해서 딕셔너리의 값을 추출할 수도 있습니다.



딕셔너리 값 변경하기

dict2['age'] = 25
print(dict2)
{'name': 'Henry', 'age': 25, 'height': 183.4}

‘age’ 키에 해당하는 값을 24에서 25로 변경했습니다.



딕셔너리 아이템 추가하기

dict1 = {'a': 1, 'b': 2, 'c': 3}

dict1['d'] = 4
print(dict1)
{'c': 3, 'b': 2, 'd': 4, 'a': 1}

dict1에 ‘d’: 4라는 키:값 쌍을 하나 추가했습니다.



딕셔너리 아이템 삭제하기

pop()

dict1 = {'a': 1, 'b': 2, 'c': 3}

a = dict1.pop('a')
b = dict1.pop('b')
print(dict1)
print(a)
print(b)
{'c': 3}
1
2

pop() 메서드는 (키를 이용해서) 딕셔너리에서 값을 삭제하고, 그 값을 반환합니다.

dict1에는 하나의 키:값 항목만 남고, a와 b에는 1, 2가 할당됩니다.


popitem()

dict1 = {'a': 1, 'b': 2, 'c': 3}

a = dict1.popitem()
print(dict1)
print(a)
{'c': 3, 'a': 1}
('b', 2)

(Python 3.7 이전의 버전에서) popitem() 메서드는 딕셔너리에서 임의의 항목을 추출해서 반환합니다.

(Python 3.7 이후의 버전에서) popitem() 메서드는 딕셔너리에서 가장 마지막에 추가된 항목을 추출해서 반환합니다.


clear()

dict1 = {'a': 1, 'b': 2, 'c': 3}

a = dict1.clear()
print(dict1)
{}

clear() 메서드는 딕셔너리의 모든 항목을 삭제합니다.


del

dict1 = {'a': 1, 'b': 2, 'c': 3}

del dict1['a']
print(dict1)
{'b': 2, 'c': 3}

del 키워드는 주어진 키에 대한 항목을 삭제합니다.

del dict1 과 같이 딕셔너리 자체를 삭제할 수도 있습니다.

(참고: Python 키워드 - del)



딕셔너리 루프 (Loop)

dict2 = {
    'name': 'Henry',
    'age': 24,
    'height': 183.4
}

for k in dict2:
    print(k, dict2[k])
name Henry
height 183.4
age 24

딕셔너리의 모든 키 또는 값을 얻기 위해서 for 루프문을 이용할 수 있습니다.

위의 예제에서 k는 키를, dict2[k]는 값을 반환합니다.



딕셔너리 키 존재 여부 확인하기

dict2 = {
  'name': 'Henry',
  'age': 24,
  'height': 183.4
}

if 'name' in dict2:
  print('Exist')

print('name' in dict2)
Exist
True

특정 키가 딕셔너리에 존재하는지 확인하기 위해서는 in 키워드를 사용합니다.

존재 여부에 따라 True 또는 False를 반환합니다.

(참고: Python 키워드 - in)



딕셔너리 메서드

아래 표는 딕셔너리와 함께 사용할 수 있는 다양한 메서드와 설명을 나타냅니다.

메서드

설명

clear()

딕셔너리의 모든 항목을 삭제합니다.

copy()

딕셔너리의 복사해서 반환합니다.

fromkeys()

주어진 키와 값으로부터 딕셔너리를 반환합니다.

get()

주어진 키에 대한 값을 반환합니다.

items()

딕셔너리의 키, 값 쌍을 튜플로 하는 리스트를 반환합니다.

keys()

딕셔너리의 모든 키를 갖는 리스트를 반환합니다.

pop()

주어진 키에 대한 항목을 삭제합니다.

popitem()

마지막으로 추가된 (Python 3.7 이후) 또는 임의의 (Python 3.7 이전) 키-값 쌍을 삭제합니다.

setdefault()

주어진 키에 대한 값을 반환합니다. 딕셔너리에 키가 없다면 None 또는 주어진 키-값 쌍을 추가합니다.

update()

주어진 키-값 쌍을 딕셔너리에 업데이트합니다.

values()

딕셔너리의 모든 값을 갖는 리스트를 반환합니다.



이전글/다음글