Python dictionary (딕셔너리)

 Python에서 dictionary 자료형에 대해 살펴보겠습니다.

dictionary는 key와 value로 이루어진 집합입니다.

순서가 없기때문에 key를 통해 value를 얻습니다.

 

1. dictionary의 선언

dictionary는 중괄호로 선언하거나 dict()로 선언할 수 있습니다.

>>> dictA = {'name': 'Aiden', 'age': 24}
>>> dictA
{'name': 'Aiden', 'age': 24}
>>> type(dictA)
<class 'dict'>

>>> dictB = dict(name = 'Aiden', age = 24, grade = 'B')
>>> dictB
{'name': 'Aiden', 'age': 24, 'grade': 'B'}
>>> type(dictB)
<class 'dict'>

 

 

2. dictionary의 요소 추가 및 수정

단일추가 및 수정은 아래처럼 값을 할당하면 됩니다.

이미 있는 key라면 수정이 되고 없는 key라면 추가됩니다.

>>> dictA = {'price': 12000}
>>> dictA
{'price': 12000}

>>> dictA['price'] = 14000
>>> dictA
{'price': 14000}

>>> dictA['discount'] = 20
>>> dictA
{'price': 14000, 'discount': 20}

여러 요소를 한 번에 수정/추가할 때는 update()를 사용합니다.

이미 있는 key라면 수정되고 없는 key라면 추가됩니다.

>>> dictA = {'price': 10000}
>>> dictA
{'price': 10000}

>>> dictA.update({'price': 20000, 'count': 13})
>>> dictA
{'price': 20000, 'count': 13}

 

 

3. dictionary의 요소 삭제

del 을 사용하여 요소를 삭제합니다.

clear()를 사용하여 모든 요소를 삭제할 수 있습니다.

>>> dictA = {'year': 2021, 'month': 8, 'day': 4}
>>> dictA
{'year': 2021, 'month': 8, 'day': 4}

>>> del dictA['month']
>>> dictA
{'year': 2021, 'day': 4}

>>> dictA.clear()
>>> dictA
{}

 

 

 

4. dictionary의 Value 얻기

dictionary의 Value는 기본적으로 key를 통해 얻습니다.

dictionary[key]를 통해 얻을 수 있고 dictionary.get(key)를 사용해 Value를 얻을 수 있습니다.

>>> dictA = {'name': 'John', 'age': 25}
>>> dictA['name']
'John'

>>> dictA.get('name')
'John'

위 두 방법의 차이는 key가 없을 때 dictionary[key]는 KeyError 오류를 발생시키고 

dictionary.get(key)는 None을 리턴합니다.

더불어 dictionary.get(key, defaultValue)를 통해 key가 없을 때 defaultValue를 리턴할 수 있습니다.

>>> dictC = {'name': 'Mark', 'grade': 'A'}
>>> dictC['age']
Tracebacl (most recent call last):
    File "<stdin>", line 1, in <module>
    KeyError: 'nokey'
    
>>> dictC.get('age')
None

>>> dictC.get('age', 'there is no key')
'there is no key'

 

 

5. dictionary의 반복문

for문을 통해 dictionary를 돌리면 기본적으로 key값이 할당됩니다. ( 순서는 임의적입니다. )

>>> dictD = {'name': 'Aiden', 'age': 24, 'grade': 'B', 'items': ['bag','phone','card']}
>>> for key in dictD:
		print(key)
        
'name'
'age'
'grade'
'items'

dictionary.values()를 활용하여 value 값으로 for문을 돌릴 수 있습니다.

>>> dictD = {'name': 'Aiden', 'age': 24, 'grade': 'B', 'items': ['bag','phone','card']}
>>> for key in dictD.values():
		print(key)
        
'Aiden'
24
'B'
['bag','phone','card']

dictionary.items()를 활용하여 (key, value) tuple 값으로 for문을 돌릴 수 있습니다.

>>> dictD = {'name': 'Aiden', 'age': 24, 'grade': 'B', 'numbers': [3,5,7]}
>>> for tupA in dictD.items():
		print(tupA)
        
('name', 'Aiden')
('age', 24)
('grade', 'B')
('numbers', [3,5,7])

>>> for key, val in dictD.items():
        print('{a} = {b}'.format(a = key, b = val))
        
name = Aiden
age = 24
grade = B
numbers = [3,5,7]

 

 

6. dictionary에서 요소확인 in

dictionary에서 in 은 요소중 해당하는 key가 있는지 여부를 리턴합니다.

>>> dictA = {'Apple': 'red', 'Banana': 'yellow', 'Orange': 'orange'}
>>> 'Apple' in dictA
True

>>> 'red' in dictA
False

>>> 'Grape' not in dictA
True