더북(TheBook)

11.4 역방향 조회

사전 d와 키 k가 있으면 값 v = d[k]는 쉽게 찾을 수 있다. 이런 작업을 조회(lookup)라고 한다.

만약 v만 알고 k를 찾아야 한다면? 여기엔 두 가지 문제가 있다. 첫째, 값 v와 연결된 키가 하나가 아닐 수 있다는 점이다. 애플리케이션에 따라 값 v와 연결된 키 하나만 고르거나 값 v와 연결된 전체 키에 대한 리스트를 만들어야 할 수도 있다. 둘째, 역방향 조회(reverse lookup)를 위한 간단한 구문이 없다는 점이다. 즉, 검색을 해야 한다.

다음은 값을 받아서 값과 연결된 첫 번째 키를 반환하는 함수다.

def reverse_lookup(d, v):

for k in d:

if d[k] == v:

return k

raise LookupError()

이 함수는 검색 패턴의 예이기도 하지만, 지금까지 우리가 본 적이 없는 raise를 사용한다. raise은 예외를 일으킨다. 여기서는 LookupError()를 일으키는데, 이는 내장 예외로 조회 작업이 실패했음을 나타낼 때 쓰인다.

루프를 끝까지 돌았는데도 사전에서 값으로 v가 없었다면 예외를 일으킨다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.