반응형
목록에 사전과 같은 안전한 "get"메소드가없는 이유는 무엇입니까?
>>> d = {'a':'b'}
>>> d['a']
'b'
>>> d['c']
KeyError: 'c'
>>> d.get('c', 'fail')
'fail'
>>> l = [1]
>>> l[10]
IndexError: list index out of range
해결 방법
궁극적으로 dict
는 키가 있는지 확인하는 것이 비효율적 인 연관 컬렉션 (값이 이름과 연결됨)이기 때문에 안전한 .get
메서드가 없을 수 있습니다. ( len
메소드가 매우 빠르기 때문에) 목록 요소에 액세스하는 예외를 피하는 것은 매우 사소한 반면, 예외를 던지지 않고 존재하고 그 값을 반환합니다. .get
메소드를 사용하면 사전에있는 37 번째 항목에 직접 액세스하지 않고 이름과 관련된 값을 쿼리 할 수 있습니다 (목록에서 요청하는 것과 비슷 함).
물론이를 직접 쉽게 구현할 수 있습니다.
def safe_list_get (l, idx, default):
try:
return l[idx]
except IndexError:
return default
__ main __
의 __ builtins __. list
생성자에이를 몽키 패치 할 수도 있지만 대부분의 코드가이를 사용하지 않기 때문에 덜 보편적 인 변경입니다. 자신의 코드로 만든 목록과 함께 이것을 사용하려면 list
를 하위 클래스로 만들고 get
메서드를 추가하면됩니다.
참조 페이지 https://stackoverflow.com/questions/5125619
반응형
'파이썬' 카테고리의 다른 글
파이썬 nan 값을 0으로 변환 (0) | 2020.10.09 |
---|---|
파이썬 VSCode : 인수를 사용하여 Python 스크립트를 디버그하는 방법 (0) | 2020.10.09 |
파이썬 SyntaxError : 생성기 표현식은 괄호로 묶어야합니다. (0) | 2020.10.09 |
파이썬 threading.Thread의 setDaemon () 메서드 (0) | 2020.10.08 |
파이썬 ImportError : _ssl이라는 모듈이 없습니다. (0) | 2020.10.08 |
댓글