728x90
반응형
안녕하세요, HELLO
오늘은 파이썬에서 Dictionary에서 조건을 통해 key, value를 삭제하는 방법에 대해서 살펴보고자 합니다. for, while loop를 통해 dictionary에서 제거할 시, 아래처럼 error가 발생하게 됩니다. 이 같은 error의 경우에는, if 조건문을 통해 해결할 가능합니다.
(RuntimeError: dictionary changed size during iteration)
STEP 1. 'Dictionary 조건 key, value 삭제' 방법
목표 key, value를 if 조건식으로 아래처럼 작성해서 제거할 수 있습니다.
# sample dictionary
sample_dic = {'p': 0,'y': 1, 't': 2, 'h': 3,'o': 4, 'n':5}
# delete key 'h' in dictionary
sample_key_dic_1 = {key: value for key, value in sample_dic.items() if key != 'h'}
# delete key 't' and 'h' in dictionary
sample_key_dic_2 = dict({key: value for key, value in sample_dic.items() if key != 'y' and key != 't'})
print(sample_key_dic_1)
print(sample_key_dic_2)
# sample dictionary
sample_dic = {'p': 0,'y': 1, 't': 2, 'h': 3,'o': 4, 'n':5}
# delete value 3 in dictionary
sample_value_dic_1 = dict({key: value for key, value in sample_dic.items() if value != 3})
# delete value 1 to 3 in dictionary
sample_value_dic_2 = {key: value for key, value in sample_dic.items() if value not in [1,2,3]}
print(sample_value_dic_1)
print(sample_value_dic_2)
반응형
STEP 2. 'Dictionary 조건 key, value 삭제' 개념
# sample dictionary
sample_dic = {'p': 0,'y': 1, 't': 2, 'h': 3,'o': 4, 'n':5}
for key, value in sample_dic.items():
if value == 2:
sample_dic.pop(key)
print(sample_dic)
for, while loop에 의해 dictionary를 삭제하게 되면, 이에 따라 dictionary의 크기가 변하여 생기는 에러 입니다.
sample_dic
위처럼 원하는 key, value는 삭제되나, error가 발생하게 되기에, 위에서 정리한 것처럼 if 조건문 등을 사용하여 삭제하고, 이를 제외한 새로운 딕셔너리를 생성하면 해결됩니다.
■ 마무리
오늘은 'Dictionary 조건 하에 key, value 삭제'에 대해서 알아봤습니다.
좋아요와 댓글 부탁드리며,
오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)
감사합니다.
반응형
'PROGRAMMING > Python' 카테고리의 다른 글
[PYTHON] Pandas Groupby 그룹별 처리 (파이썬, 판다스) (0) | 2022.07.22 |
---|---|
[PYTHON] stale error 해결 방법 (selenium, 셀레니움) (0) | 2022.07.01 |
[PYTHON] sort, sorted 항목 정렬 (오름차순, 내림차순) (0) | 2022.06.17 |
[PYTHON] pandas "Unnamed : 0" column 삭제, 제거 (0) | 2022.04.22 |
[PYTHON] 기업마당_정부 지원 사업 자동화 수집 (크롤링) (0) | 2022.04.10 |
댓글