Python의 keys() 메서드는 딕셔너리에 저장된 모든 키를 담고 있는 객체를 반환합니다. 반환된 객체는 list() 메서드를 사용해 리스트로 변환할 수 있으며, 호출 문법은 dictionary.keys()입니다.
딕셔너리에 어떤 데이터가 저장되어 있는지 확인하고 싶을 때가 있습니다. 예를 들어 도서관의 책 정보를 담은 딕셔너리가 있다면, 어떤 종류의 정보가 저장되어 있는지 파악하기 위해 모든 키를 조회해야 할 수 있습니다.
바로 이럴 때 딕셔너리의 keys() 메서드가 유용합니다. 이 글에서는 다양한 예제와 함께 Python에서 keys() 메서드를 사용하는 방법을 자세히 살펴보겠습니다.
Python 딕셔너리 keys() 메서드란?
keys() 메서드는 딕셔너리의 모든 키를 반환하며, 별도의 인수를 받지 않습니다. 반환값은 일반 리스트가 아닌 뷰(view) 객체라는 점이 특징입니다.
dict_name.keys()
사용법은 간단합니다. 딕셔너리 이름 뒤에 keys() 메서드를 붙여 호출하면 됩니다.
반환된 뷰 객체는 반복 가능(iterable)하기 때문에 for 문으로 내용을 순회할 수 있습니다. 다만 인덱싱 등 리스트 기능이 필요한 경우에는 객체를 리스트로 변환해야 할 수 있습니다.
키 목록을 리스트로 변환하기
딕셔너리의 모든 키를 콘솔에 출력하고 싶다면, 가독성을 높이기 위해 키를 리스트로 변환하는 것이 좋습니다.
key_list = list(dictionary.keys()) print(key_list)
이 코드는 키 목록을 리스트 형태로 반환합니다. 값이 대괄호([])로 묶여 있는 것으로 리스트임을 확인할 수 있습니다.
인덱싱으로 첫 번째 키 가져오기
딕셔너리의 첫 번째 키를 확인하고 싶다면 인덱싱을 사용할 수 있습니다. 이 경우에도 먼저 키 컬렉션을 리스트로 변환해야 합니다.
key_list = list(dictionary.keys()) print(key_list[0])
이 코드는 딕셔너리 키 리스트에서 인덱스 0 위치에 있는 키를 출력합니다.
keys() 메서드 실전 예제
베이커리 주문 정보를 저장하는 딕셔너리가 있다고 가정해 보겠습니다. 이 딕셔너리는 product(제품), price(가격), mayo(마요네즈 여부)라는 세 개의 키를 가지며, 각 키에는 대응하는 값이 저장되어 있습니다.
베이커리에서는 주문서에 새로운 정보를 추가할지 검토 중이라고 합니다. 그 전에 현재 수집하고 있는 정보가 무엇인지 먼저 확인하고 싶어 합니다.
딕셔너리의 키 목록을 조회하려면 keys() 메서드를 사용하면 됩니다.
order = {
'product': 'Ham Sandwich',
'price': 2.10,
'mayo': False
}
order_keys = order.keys()
print(order_keys)
코드 실행 결과:
['product', 'price', 'mayo']
먼저 order라는 이름의 Python 딕셔너리를 정의했습니다. 그다음 order.keys()를 호출해 딕셔너리의 키 목록을 가져오고, 이를 order_keys 변수에 할당한 뒤 콘솔에 출력했습니다. 결과적으로 딕셔너리의 모든 키가 출력됩니다.
딕셔너리 업데이트 시 keys() 동작
keys() 메서드의 중요한 특징 중 하나는, 딕셔너리에 새로운 키가 추가되면 그 변경 사항이 자동으로 반영된다는 점입니다.
예를 들어 고객이 기프트카드로 결제했는지 여부를 저장하는 새로운 키를 추가한다고 해보겠습니다.
order = {
'product': 'Ham Sandwich',
'price': 2.10,
'mayo': False
}
order_keys = order.keys()
order["gift_card"] = False
print(order_keys)
인덱싱 표기법을 사용해 gift_card 키를 추가하고 값 False를 할당했습니다. 이 코드는 키 목록을 order_keys 변수에 할당한 이후에 실행됩니다.
코드 실행 결과:
['product', 'price', 'mayo', 'gift_card']
흥미로운 점은, 우리가 order.keys()를 호출한 시점에는 gift_card 키가 아직 존재하지 않았다는 것입니다. 하지만 프로그램은 이후의 변경 사항까지 추적하여 최신 상태의 키 목록을 출력했습니다.
즉, keys() 메서드는 새로운 키가 추가되더라도 항상 딕셔너리의 최신 키 목록을 유지합니다. 이는 keys()가 키의 복사본이 아닌 동적 뷰 객체를 반환하기 때문입니다.
특정 키가 딕셔너리에 있는지 확인하기
keys() 메서드의 흔한 활용 사례 중 하나는 특정 키가 딕셔너리에 존재하는지 확인하는 것입니다. Python의 in 연산자와 함께 사용하며, 보통 if 문과 조합됩니다.
order 딕셔너리에 mayo 키가 저장되어 있는지 확인하는 코드는 다음과 같습니다.
order = {
'product': 'Ham Sandwich',
'price': 2.10,
'mayo': False
}
if "mayo" in order.keys():
print("'mayo' 키가 order 딕셔너리에 있습니다.")
else:
print("'mayo' 키가 order 딕셔너리에 없습니다.")
코드 실행 결과:
'mayo' 키가 order 딕셔너리에 있습니다.
코드를 살펴보면, 먼저 order 딕셔너리를 정의한 후 if…in 구문을 사용해 order.keys()가 생성한 키 목록 안에 mayo 키가 있는지 검사합니다.
mayo는 order 딕셔너리의 키이므로 조건식이 참(True)으로 평가되어 if 블록의 코드가 실행됩니다. 만약 mayo 키를 삭제했다면 다음과 같은 결과가 출력됩니다.
'mayo' 키가 order 딕셔너리에 없습니다.
코드가 mayo가 더 이상 딕셔너리의 키가 아니라는 것을 정확히 인식하여, else 블록의 내용이 실행된 것입니다.
마무리
딕셔너리의 keys() 메서드는 Python 딕셔너리에 있는 모든 키의 목록을 조회합니다. if…in 구문과 함께 사용하면 특정 키가 딕셔너리에 존재하는지 확인할 수도 있으며, 이 메서드는 어떠한 인수도 받지 않습니다.
핵심 정리는 다음과 같습니다.
- keys()는 딕셔너리의 모든 키를 담은 뷰 객체를 반환합니다.
list()로 변환하면 인덱싱 등 리스트 기능을 사용할 수 있습니다.- 반환된 뷰 객체는 동적이므로 딕셔너리 변경 사항이 자동으로 반영됩니다.
in연산자와 조합하면 키 존재 여부를 손쉽게 확인할 수 있습니다.
Python 코딩을 더 깊이 배우고 싶다면 학습 로드맵과 온라인 강좌 추천이 담긴 Python 학습 가이드도 함께 참고해 보세요.