파이썬 사전
본문
my_dict = {'apple': 100, 'melon': 200, 'strawberry': 150}
for key, value in my_dict.items():
if value == 200:
del my_dict[key]
이거 왜 에러가 발생하는가요
답변 1
안녕하세요? ^^
말씀하신 스크립트에서 "dictionary changed size during iteration" 에러가 발생하는 것은
사실상 버그에 가깝습니다 ㅠㅠ
공식문서에서도 .items() 메서드는 '리스트'를 반환한다고 기술되어 있죠 -_-;;;
이를 우회적으로 해결하는 방법은 다음과 같습니다.
1. 리스트로 감싸서 해결하는 방법
my_dict = {'apple': 100, 'melon': 200, 'strawberry': 150}
for key, value in list(my_dict.items()):
if value == 200:
del my_dict[key]
2. 리스트와 키로 해결하는 방법
my_dict = {'apple': 100, 'melon': 200, 'strawberry': 150}
for x in list(my_dict):
if my_dict[x] == 200:
del my_dict[x]
3. .copy() 메서드로 해결하는 방법
my_dict = {'apple': 100, 'melon': 200, 'strawberry': 150}
for x in my_dict.copy():
if my_dict[x] == 200:
del my_dict[x]
4. comprehension을 사용하는 방법
my_dict = {k: v for k, v in my_dict.items() if v != 200}
Python에 관한 질문은 언제든지 환영입니다!
그럼 즐거운 불금 되세요! ^-^
!-->!-->!-->!-->
답변을 작성하시기 전에 로그인 해주세요.