PROGRAMMING/Python

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

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

좋아요댓글 부탁드리며,

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

감사합니다.

반응형