Python 딕셔너리 자료형

2021. 8. 18. 18:17dev

1. 딕셔너리 쌍 추가, 삭제

딕셔너리에 key와 value를 추가하려면 딕셔너리[key] = value 와 같이 입력하면 된다.

dict = {1: 'a'}
dict[2] = 'b'
print(dict)  # {1: 'a', 2: 'b'}

 

요소를 삭제하려면 del을 사용한다. 

dict = {1: 'a', 2: 'b'}
del dict[1]
print(dict)  # {2: 'b'}

 

2. key를 사용해 value 얻기 

딕셔너리[key]를 사용해 해당 value를 얻을 수 있다. key는 고유한 값이라는 특성이 있어, 겹치지 않게 데이터를 저장하고 얻을 수 있다는 점에서 유용하다.

dict = {1: 'a', 2: 'b'}
print(dict[1])  # a

 

만약, 중복된 key값이 있는 경우, 하나의 key를 제외한 나머지 key들은 무시된다. 이때, 동일한 key중에서 가장 마지막에 설정된 key가 최종 key값이 된다. 

dict = {1: 'a', 1: 'b'}
print(dict[1])  # b

 

3. key 리스트 만드는 함수, keys()

딕셔너리 함수중, keys()는 key값만 모아서 dict_keys 객체를 반환한다. 

dict = {1: 'a', 2: 'b', 3: 'c'}
print(dict.keys())  # dict_keys([1, 2, 3])
print(list(dict.keys()))  # [1, 2, 3]

dict_keys 라는 객체를 반환하기 때문에, 리스트만 얻고싶다면 list화 시켜주면 된다. 

 

리스트를 쓰는것과 비슷하지만, 다음과 같이 요소들을 하나씩 얻고싶을때 유용할것같다. 

dict = {1: 'a', 2: 'b', 3: 'c'}
for key in dict.keys():
    print(key, end=' ')  # 1 2 3

 

4. value 리스트 만드는 함수, values()

key 리스트와 마찬가지로, values 함수를 사용하면 value의 리스트를 구할 수 있고, 함수만 사용한다면 dict_values 객체를 반환할 것이다. 

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

print(dict.values())  # dict_values(['a', 'b', 'c'])
print(list(dict.values()))  # ['a', 'b', 'c']
for key in dict.values():
    print(key, end=' ')  # a b c

 

5. (key, value) 쌍을 만드는 함수, items()

items()는 key와 value 쌍을 튜플로 묶어서 dict_items 객체로 반환한다. 

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

print(dict.items())  # dict_items([(1, 'a'), (2, 'b'), (3, 'c')])
print(list(dict.items()))  # [(1, 'a'), (2, 'b'), (3, 'c')]

여기까지 나온 함수들은 모두 파이썬 3.0 이후로 리스트 대신에 dict_함수명 같은 객체를 돌려준다. 2.7 까지는 리스트였다고 하는데 메모리 낭비를 줄이기 위해 객체로 반환한다고 한다..! 

 

6. key로 value 얻는 함수, get()

key를 통해서 value를 얻는건 딕셔너리[key]로 접근한다고 했는데, get 함수를 사용하는 것과 무슨 차이가 있을까.

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

print(dict.get(1))  # a

print(dict[4])  # KeyError
print(dict.get(4))  # None

이처럼 딕셔너리 내부에 존재하지 않는 key로 접근하려 할때, 기존의 딕셔너리[key] 사용법은 오류를 발생시키지만, 

get 함수를 사용하면 None을 반환한다. 상황에 맞게 get 함수를 사용하면 된다. 

 

7. key가 딕셔너리 내부에 있는지 확인

in 키워드를 사용해 해당 key가 딕셔너리 안에 존재하는지 여부를 체크할 수 있다. 

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

print(1 in dict)  # True
print(4 in dict)  # False

 

출처 | https://wikidocs.net/16#_2