Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 딕셔너리에서 특정 값(Value)에 연결된 키(Key) 찾는 방법


딕셔너리에서 특정 값(value)에 연결된 키(key)를 찾아야 할 때는 'index' 메서드를 활용할 수 있습니다. 파이썬 3.7 이상에서는 딕셔너리가 삽입 순서를 유지하므로, 키와 값을 각각 리스트로 변환한 뒤 인덱스를 기준으로 서로 연결 지어 찾는 방식이 안정적으로 동작합니다.

예제 코드

my_dict = {'Hi': 100, 'there': 121, 'Mark': 189}
print('딕셔너리:', my_dict)

dict_key = list(my_dict.keys())
print('키 목록:', dict_key)

dict_val = list(my_dict.values())
print('값 목록:', dict_val)

my_position = dict_val.index(100)
print('값 100에 연결된 키:', dict_key[my_position])

my_position = dict_val.index(189)
print('값 189에 연결된 키:', dict_key[my_position])

실행 결과

딕셔너리: {'Hi': 100, 'there': 121, 'Mark': 189}
키 목록: ['Hi', 'there', 'Mark']
값 목록: [100, 121, 189]
값 100에 연결된 키: Hi
값 189에 연결된 키: Mark

코드 설명

  • 딕셔너리 정의 및 출력: 문자열 키와 정수 값으로 구성된 딕셔너리 my_dict를 생성하고 콘솔에 출력합니다.

  • 키 추출: .keys() 메서드로 딕셔너리의 모든 키를 가져온 뒤 list()로 변환하고, 결과를 dict_key 변수에 저장합니다.

  • 값 추출: .values() 메서드로 모든 값을 가져와 리스트로 변환한 후, 별도의 변수 dict_val에 저장합니다.

  • 인덱스 조회: dict_val.index(100)처럼 index() 메서드를 호출하면 해당 값이 리스트에서 처음 나타나는 위치(인덱스)를 반환받아 변수에 저장합니다.

  • 키 매핑: 값 리스트에서 구한 인덱스를 키 리스트(dict_key)에 적용하면 그 값과 짝을 이루는 키를 얻을 수 있으며, 이를 최종 결과로 출력합니다.

주의할 점

index() 메서드는 같은 값이 여러 번 등장하더라도 첫 번째 위치만 반환합니다. 즉, 동일한 값이 여러 키에 할당되어 있어도 하나의 키만 얻게 됩니다. 또한 존재하지 않는 값을 검색하면 ValueError가 발생하므로, 필요하다면 if 100 in dict_val과 같은 조건문으로 값의 존재 여부를 먼저 확인하는 것이 안전합니다.

대체 방법: 특정 값에 해당하는 모든 키 찾기

중복된 값을 가진 모든 키를 한 번에 얻고 싶다면 리스트 컴프리헨션을 사용하는 것이 더 간결하고 효율적입니다.

my_dict = {'Hi': 100, 'there': 121, 'Mark': 189, 'Jane': 100}

result = [key for key, value in my_dict.items() if value == 100]
print(result)  # ['Hi', 'Jane']

.items() 메서드로 키-값 쌍을 순회하면서 조건에 맞는 키만 모으는 방식이므로, 인덱스 계산 없이 직관적으로 원하는 결과를 얻을 수 있습니다. 상황에 따라 단일 키가 필요하면 index() 방식을, 여러 개의 키가 필요하면 리스트 컴프리헨션 방식을 선택하면 됩니다.