본문으로 바로가기

파이썬 딕셔너리 사용하기 dict

category Language/Python 2020. 7. 9. 12:24

딕셔너리 선언 {}

Key: Value 의 쌍을 원소로 가집니다.

기본적인 사용법은 다음과 같습니다.

>>> people = {
... 'name': 'jvv',
... 'age': 27
... }
>>>
>>> people['name']
'jvv'
>>>
>>> len(people)
2

 

원소 추가, 수정, 삭제

다음과 같이 Key 로 접근하여 추가, 수정합니다.

>>> people['hobby'] = 'guitar'
>>>
>>> people
{'name': 'jvv', 'age': 27, 'hobby': 'guitar'}
>>>
>>> people['age'] = 28
>>>
>>> people
{'name': 'jvv', 'age': 28, 'hobby': 'guitar'}

 

setdefault() 를 사용하고 추가할 수 있습니다.

다음과 같은 특징을 가집니다.

동일한 Key 로는 중복해서 추가되지 않고, 호출 시 Value를 반환하는 것을 볼 수 있습니다.

>>> people
{'name': 'jvv', 'age': 28, 'hobby': 'guitar'}
>>>
>>> people.setdefault('job', 'student')
'student'
>>>
>>> people
{'name': 'jvv', 'age': 28, 'hobby': 'guitar', 'job': 'student'}
>>>
>>> people.setdefault('job', 'teacher')
'student'

 

삭제할 때는 del 을 사용하여 Key 를 이용하여 접근합니다.

>>> people
{'name': 'jvv', 'age': 28, 'hobby': 'guitar', 'job': 'student'}
>>>
>>> del people['job']
>>>
>>> people
{'name': 'jvv', 'age': 28, 'hobby': 'guitar'}

 

초기화할 때는 clear()

>>> people.clear()
>>> people
{}

 

Keys() Values() Items()

keys() 를 이용하여 딕셔너리의 key 들로만 추출할 수 있습니다.

반복가능한 객체로, 리스트로 사용할 경우 list() 를 이용합니다.

>>> people.keys()
dict_keys(['name', 'age', 'hobby'])
>>>
>>> keys = people.keys()
>>> type(keys)
<class 'dict_keys'>
>>> keys[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'dict_keys' object is not subscriptable
>>>
>>> keys = list(keys)
>>> keys[0]
'name'

 

values() 도 동일합니다.

>>> people
{'name': 'jvv', 'age': 28, 'hobby': 'guitar'}
>>>
>>> values = list(people.values())
>>> values[2]
'guitar'

 

다음은 items() 입니다.

>>> people.items()
dict_items([('name', 'jvv'), ('age', 28), ('hobby', 'guitar')])
>>>
>>> for k, v in people.items(): print(k, v)
...
name jvv
age 28
hobby guitar

 

다음과 같이 활용할 수 있습니다.

people = []
items = {
    'name': 'jvvp',
    'age': 29,
    'job': 'student'
}
items2 = {
    'name': 'hong',
    'age': 33,
    'job': 'N/A'
}
items3 = {
    'name': 'lee',
    'age': 27,
    'job': 'student'
}

people.append(items)
people.append(items2)
people.append(items3)

for p in people:
    for k, v in p.items():
        if v == 'student':
            print(f'{p["name"]} is Student.')

 

확장 update()

확장할 때는 update() 를 사용합니다. 리스트의 extend() 와 유사합니다.

>>> people = {}
>>> people['name'] = 'jvv'
>>> people
{'name': 'jvv'}
>>> people_info = {'age': 30}
>>> people.update(people_info)
>>> people
{'name': 'jvv', 'age': 30}

 

딕셔너리 Key, Value 바꾸기

컴프리헨션을 이용하면 간단하게 Key, Value 를 바꿀 수 있습니다.

dic = {
    '1': 'a',
    '2': 'b',
    '3': 'c'
}
print(dic)

r_dic = {value: key for key, value in dic.items()}
print(r_dic)
결과
{'1': 'a', '2': 'b', '3': 'c'}
{'a': '1', 'b': '2', 'c': '3'}