Python set을 이용한 목록 비교(일치, 누락)

두 개의 목록을 비교해야 하는 경우가 종종 발생합니다. 가령, 설문조사를 한다고 칩시다. 설문조사 대상자가 100명이라 할 때, 그 중 일부만 설문에 참여하였고 일부는 대상자가 아니었음에도 설문에 참여했다고 가정합시다. 설문에 참여한 사람, 설문에 불참한 사람, 설문 대상자가 아님에도 참여한 사람을 분류해야 하는 상황이라 합시다.

현재 갖고 있는 정보는 설문조사 대상자 목록(100명)과 설문조사 응답자 목록(90명)라고 가정합니다. 이 목록들이 Excel 파일로 주어질 경우, 복사/붙여넣기를 통해 간단히 Python list로 만들 수 있습니다. 그렇게 해서 얻어진 두 개의 리스트를 target과 resp라 합시다.

  • target = ['강감찬', '이순신', '임꺽정', ...] # 설문조사 대상자
  • resp = ['이순신', '전봉준', ...] # 설문조사 응답자

자, 이제 Python set operation을 이용해 응답자 분석을 해 봅니다.

  • 설문조사 대상자 중 응답한 사람: set(target).intersection(set(resp))
  • 설문조사 대상이나 응답하지 않은 사람: set(target) - set(resp)
  • 설문조사 대상이 아니지만 응답한 사람: set(resp) - set(target)

이 정보를 바탕으로, 아직 설문에 참여하지 않은 설문 대상자에게 연락을 취해 설문 참여를 독려할 수 있겠네요. 설문 대상이 아니었지만 설문에 참여해 준 사람들이 어떤 분들인지도 확인할 수도 있습니다.