딕셔너리 표현식을 이용한 특정 키-값 삭제하는 방법 입니다. (RuntimeError: dictionary changed size during iteration)
잘못된 코드 a = {'one': 1, 'two': 2, 'three': 3, 'four': 4} ## 예시를 위해 간단한 딕셔너리 생성 for key, value in a.items(): if value == 3: a.pop(key) ## 값이 3이면 키-값 쌍 삭제 print(a) |
실행 결과 |
for문에 의해 반복하던 도중에 값이 3인것을 찾아 삭제 후 딕셔너리의 크기가 바껴서 생기는 에러 입니다.
위처럼 간단한 코드로 삭제는 정상적으로 되나, for문안에 다른 내용들이 있을 경우 for문이 멈추게 되면서 정상적인 기능을 수행할 수 없게 됩니다.
때문에 딕셔너리 표현식에서 if 조건문을 사용하여 삭제할 값을 제외 후 새로운 딕셔너리를 생성 해주어야 합니다.
- {키: 값 for 키, 값 in 딕셔너리 if 조건식}
- dict({키: 값 for 키, 값 in 딕셔너리 if 조건식})
예시 코드 a = {'one': 1, 'two': 2, 'three': 3, 'four': 4} ## 예시를 위해 간단한 딕셔너리 생성 a = {key: value for key, value in a.items() if value != 2} ## 값이 2인것 빼고(1,3,4) a변수에 딕셔너리를 생성 또는 a = dict({key: value for key, value in a.items() if value != 2}) ## 값이 2인것 빼고(1,3,4) a변수에 딕셔너리를 생성 |
출력만 하고 싶다면 변수에 저장하는 부분만 생략 하시면 됩니다.
직접 키-값을 삭제하는 방식이 아니라, 삭제할 키-값을 if 조건식을 통해 제외를 하고 나서 새로운 딕셔너리를 만드는 방식입니다.
'Programming > Python' 카테고리의 다른 글
[Python 3.7] 파이썬 비교 연산자와 논리 연산자 (개념, 종류) (1) | 2020.01.11 |
---|---|
[Python 3.7] 파이썬 변수란? (할당 및 활용 map, input) (0) | 2020.01.11 |
[Python 3.7] 파이썬 숫자 계산과 사칙연산 (2) | 2020.01.10 |
[Python 3.7] 텍스트안의 특정 문자열 카운트 하기 (0) | 2019.12.23 |
[Python 3.7] 파이썬 FizzBuzz Test (0) | 2019.12.11 |