본문 바로가기
파이썬

파이썬 왜 목록에는 사전과 같은 안전한 "get"메소드가 없습니까?

by º기록 2020. 10. 9.
반응형

목록에 사전과 같은 안전한 "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

 

 

반응형

댓글