문제

연오는 개 다섯 마리를 키우고 있다. 어느날 외출하고 돌아오니 누군가가 침대를 물어뜯은 것이 아닌가! 현장 조사 결과, 범인은 주둥이가 작고, 발이 크고, 흰색 털을 가진 개라는 것을 알 수 있었다. 연오는 용의자를 좁히기 위해 개의 정보를 정리했다. 이 데이터를 선별해 용의자로 의심되는 개를 모두 찾아 그 이름을 화면에 출력하라.

용의자 = [
    {'이름': '멍멍', '털': '흰색', '주둥이': '크다', '발': '크다'},
    {'이름': '킁킁', '털': '검은색', '주둥이': '작다', '발': '크다'},
    {'이름': '왈왈', '털': '흰색', '주둥이': '작다', '발': '크다'},
    {'이름': '꿀꿀', '털': '검은색', '주둥이': '작다', '발': '작다'},
    {'이름': '낑낑', '털': '흰색', '주둥이': '작다', '발': '작다'},
]

코드

용의자 = [
    {'이름': '멍멍', '털': '흰색', '주둥이': '크다', '발': '크다'},
    {'이름': '킁킁', '털': '검은색', '주둥이': '작다', '발': '크다'},
    {'이름': '왈왈', '털': '흰색', '주둥이': '작다', '발': '크다'},
    {'이름': '꿀꿀', '털': '검은색', '주둥이': '작다', '발': '작다'},
    {'이름': '낑낑', '털': '흰색', '주둥이': '작다', '발': '작다'},
]

# 범인은 주둥이가 작고, 발이 크고, 흰색 털을 가진 개
profiled_dogs_1 = filter(lambda dog: dog['주둥이'] == '작다', 용의자)
profiled_dogs_2 = filter(lambda dog: dog['발'] == '크다', profiled_dogs_1)
profiled_dogs_3 = filter(lambda dog: dog['털'] == '흰색', profiled_dogs_2)

for dog in profiled_dogs_3:
    print(dog['이름'])

실행 결과

왈왈

해설

print([
    dog['이름']
    for dog
    in 용의자
    if dog['주둥이'] == '작다' and dog['발'] == '크다' and dog['털'] == '흰색'
])