문제
다음 Python 코드의 출력 결과는?
Pythonlst = [1, 2, 3] dst = {i: i * 2 for i in lst} s = set(dst.values()) lst[0] = 99 dst[2] = 7 s.add(99) print(len(s & set(dst.values())))
① 1 ② 2 ③ 3 ④ 4
정답
2번
해설
정답: 2. 처음 dst 값은 {2,4,6}이고 s도 {2,4,6}이다. dst[2]=7 이후 dst 값은 {2,7,6}이고 s에 99를 추가하면 {2,4,6,99}이다. 교집합은 {2,6}이므로 길이는 2이다.
오답 풀이
- 1번: 교집합 원소 하나를 누락한 값이다.
- 2번: {2,6} 두 개가 교집합이므로 정답이다.
- 3번: 4나 7을 잘못 포함한 값이다.
- 4번: s 전체 크기와 혼동한 값이다.
보충 개념 딕셔너리 컴프리헨션은 생성 시점의 리스트 값을 사용한다. 이후 리스트를 바꿔도 이미 만들어진 딕셔너리에는 자동 반영되지 않는다.