본문 바로가기
PROGRAMMING/Python

[PYTHON] Dictionary 조건 하에 key, value 삭제

by HYUNHP 2022. 6. 24.
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 삭제'에 대해서 알아봤습니다.

좋아요댓글 부탁드리며,

오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)

감사합니다.

반응형

댓글