파이썬 사전에서 요소를 제거하는 방법
Aliaksei Yursha
2023년1월30일
때로는 파이썬 사전에 하나 이상의 키를 삭제하려고합니다. 여러 가지 방법으로 할 수 있습니다.
파이썬 사전 요소를 제거하는 del
문
한 가지 방법은 Python의 내장 del
문을 사용하는 것입니다.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['fats']
>>> meal
{'proteins': 10, 'carbohydrates': 80}
사전에없는 키로 요소를 삭제하려고하면
파이썬 런타임은 KeyError
를 던질 것입니다.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> del meal['water']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'water'
파이썬 사전 요소를 제거하는 dict.pop()
함수
또 다른 방법은 dict.pop()
함수를 사용하는 것입니다.
이 방법의 장점은 다음을 지정할 수 있다는 것입니다.
요구 된 키가 존재하지 않는 경우에 돌려주는 디폴트 치
사전에.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water', 3000)
3000
>>> meal.pop('fats', 3000)
10
>>> meal
{'proteins': 10, 'carbohydrates': 80}
반환 할 기본값을 제공하지 않고 요청한 경우
키가 존재하지 않으면 위의 del
과 같은 런타임 오류가 발생합니다.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> meal.pop('water')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'water'
파이썬 사전에서 여러 요소 삭제
사전에서 여러 요소를 한 번에 삭제해야하는 경우,
파이썬 3은 편리한 리스트 내포를 제공합니다.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> [meal.pop(key) for key in ['fats', 'proteins']]
[10, 10]
>>> meal
{'carbohydrates': 80}
위의 접근 방식을 사용하면 전달 된 키 중 하나가 사전에 없으면 Python 이 여전히 충돌합니다.
이 문제를 피하기 위해 기본 반환 값으로 dict.pop()
에 두 번째 인수를 줄 수 있습니다.
>>> meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}
>>> [meal.pop(key, None) for key in ['water', 'sugars']]
[None, None]
>>> meal
{'fats': 10, 'proteins': 10, 'carbohydrates': 80}
성능 특성
del
문과 dict.pop()
을 사용하면 성능 특성이 다릅니다.
>>> from timeit import timeit
>>> timeit("meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}; del meal['fats']")
0.12977536499965936
>>> timeit("meal = {'fats': 10, 'proteins': 10, 'carbohydrates': 80}; meal.pop('fats', None)")
0.21620816600079706
위의 타이밍에서 다음과 같이 del
문은 거의 두 배 빠릅니다.
그러나 폴백 값을 가진 dict.pop()
은 런타임 오류를 피하는 데 도움이되므로 더 안전합니다.
키가 사전에 있어야한다고 확신하는 경우 전자를 사용하고 그렇지 않은 경우 전자를 사용하십시오.