강의로 돌아가기
-

for 문으로 쓰면 안되나요

def checkandclear(box):
for key in box.keys():
if key == 불량품:
box.clear()
print(불량품이 있으면 box를 clear합니다.)
else:
print(box.keys())

값을 대입해봤을때 오류가 뜨던데 왜인지 혼자서는 생각이 안납니다ㅜㅜ

작성중인 코드―dict_and_list_1
1
2
3
4
5
6
def check_and_clear(box):
    if "불량품" in box.keys():
        box.clear()
        print("불량품이 있으면 box를 clear합니다.")
    else:
        print(box.keys())
1 개의 답변
정두식_

올려주신 코드를 실행해 보면 RuntimeError: dictionary changed size during iteration라는 에러가 나오는데요. box.keys()를 가지고 for문을 돌면서 box자체를 변경해서 생기는 문제입니다.

for문을 돌 떄, for문을 도는 기준이 되는 배열 등을 변경하면 이런 오류가 발생합니다.

  • 박창현
    box 를 clear해서 값이 없는데 빈값으로 for문을 돌리니 에러가 발생하는 겁니다. return으로 빠져 나가세요. 박창현 2017.08.18 11:24
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.