파이썬에서 여러 개의 딕셔너리로 이루어진 리스트 안에, 특정 키 'K'에 해당하는 값이 존재하는지 확인해야 하는 경우가 있습니다. 이럴 때 가장 간결하고 파이썬다운 방법은 리스트 컴프리헨션(list comprehension)과 in 연산자를 함께 사용하는 것입니다.
아래에서 실제 예제를 통해 자세히 살펴보겠습니다.
예제 코드
my_list = [{"python" : "14", "is" : "great", "fun" : "1`"},{"python" : "cool", "is" : "fun", "best" : "81"},{"python" : "93", "is" : "CS", "amazing" : "16"}]
print("리스트 출력:")
print(my_list)
K = "python"
print("키 K의 값:")
print(K)
value = "cool"
my_result = value in [index[K] for index in my_list]
print("결과:")
if(my_result == True):
print("해당 키에 대해 값이 존재합니다.")
else:
print("해당 키에 대해 값이 존재하지 않습니다.")실행 결과
리스트 출력:
[{'python': '14', 'is': 'great', 'fun': '1`'}, {'python': 'cool', 'is': 'fun', 'best': '81'}, {'python': '93', 'is': 'CS', 'amazing': '16'}]
키 K의 값:
python
결과:
해당 키에 대해 값이 존재합니다.코드 설명
먼저 여러 개의 딕셔너리 요소를 담고 있는 리스트를 정의하고, 콘솔에 출력합니다.
확인할 키
K(여기서는"python")를 정의한 뒤 화면에 표시합니다.찾고자 하는 값을 담은 문자열 변수
value를 정의합니다.리스트 컴프리헨션을 사용하여 리스트를 순회하면서, 각 딕셔너리에서 키
K에 해당하는 값들을 새로운 리스트로 추출합니다.in연산자를 통해 찾고자 하는 값이 추출된 리스트 안에 있는지 검사하고, 그 결과(불리언 값)를 변수my_result에 할당합니다.마지막으로
if-else조건문을 사용하여 결과가True인지False인지에 따라 적절한 메시지를 콘솔에 출력합니다.
추가 팁: 더 간결한 방법
any() 함수와 제너레이터 표현식을 활용하면 중간 리스트를 생성하지 않고도 동일한 결과를 얻을 수 있어 메모리 측면에서 더 효율적입니다.
my_result = any(index.get(K) == value for index in my_list)
이 방식은 키가 존재하지 않는 딕셔너리가 있더라도 .get() 메서드 덕분에 KeyError 없이 안전하게 처리할 수 있다는 장점도 있습니다.