파이썬 딕셔너리에서 키에 해당하는 값을 가져오려고 하면 주로 아래와 같이 사용한다.
>>> week_dict = dict() >>> week_dict['Mon'] = '맑음' >>> week_dict['Tue'] = '구름' >>> week_dict['Sun'] = '비' >>> week_dict {'Mon': '맑음', 'Tue': '구름', 'Sun': '비'} >>> >>> weather = week_dict['Sun'] >>> weather '비' |
week_dict['Sun'] 을 실행하면 'Sun' 키에 대한 값 '비'를 가져온다.
그런데 딕셔너리에 없는 값을 지정하면 어떻게될까?
아래와 같이 예외가 발생한다.
>>> week_dict['Fri'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Fri' |
'Fri'라는 키가 없다고 예외를 발생시킨다.
try ... except 문으로 잡아주면 되는 부분이긴 한데, 그래도 신경쓰이는 부분이다.
이럴때 사용하는 딕셔너리의 메서드가 get() 이다.
딕셔너리.get(key[, default값])
위와 같이 사용할 수 있다.
딕셔너리에 key가 있으면 해당 key에 대한 값을 반환하고, key가 없으면 default에 지정한 값을 반환한다.
default에 값을 설정하지 않으면 아무값도(None) 반환하지 않는다.
예제를 보면
>>> week_dict.get('Fri') >>> week_dict.get('Fri','없는키값입니다.') '없는키값입니다.' |
처음 week_dict.get('Fri') 를 실행했을때 아무값도 반환되지 않은것을 알수 있다.
두번째 week_dict.get('Fri','없는키값입니다.') 를 실행했을때는 'Fri'키가 없기때문에 default값으로 설정한 '없는 키값입니다.'가 반환되었다.
약~간 비슷한 메서드로 setdefault()메서드가 있다.
Introducing Python에서 get()과 setdefault()가 같다고 되있는데, 비슷하긴한데 같은지는 모르겠다.
딕셔너리.setdefault(key[, default])
어쨌든 setdefault()도 딕셔너리의 메서드로서 해당 키값을 반환하기는 한다.
그런데 이 메서드는 set이 붙은데서 알 수 있듯이 값을 지정할 수도 있다.
>>> weather = week_dict.setdefault('Fri','강풍') >>> weather '강풍' >>> week_dict {'Mon': '맑음', 'Tue': '구름', 'Sun': '비', 'Fri': '강풍'} |
'Fri'는 원래 없는 키였는데, 위와 같이 실행시키자 딕셔너리에 키와 값이 지정되었다.
그러면 기존에 있는 키를 호출하면 어떻게 될까?
그 키에 대한 값을 업데이트 해버릴까?
인자로 넘긴 키가 존재하면 기존에 존재하는 키에 대한 값을 반환하기만 한다.
default값은 무시된다.
>>> weather = week_dict.setdefault('Mon','강풍') >>> weather '맑음' |
위에서 'Mon'키에 '강풍' 값을 지정했지만, 기존에 'Mon'에 매칭돼 있던 '맑음'값이 반환되었다.
키의 존재여부 확인없이 딕셔너리를 초기화 하기에 좋을것으로 생각된다.
'IT' 카테고리의 다른 글
[파이썬 기초] 순서지정된 딕셔너리 OrderedDict() (0) | 2018.11.22 |
---|---|
[파이썬 기초] Counter를 이용한 항목 계산 (0) | 2018.11.22 |
[파이썬 기초] print() 함수에서 % 와 format()를 사용하여 서식에 맞게 출력(1) (1) | 2018.11.02 |
[파이썬 기초] print() 함수 (0) | 2018.11.02 |
[파이썬 기초] 파일 입출력(open(), write(), read()) (0) | 2018.10.29 |