파이썬 사전에서 요소를 제거하는 방법

  1. 파이썬 사전 요소를 제거하는 del
  2. 파이썬 사전 요소를 제거하는 dict.pop()함수
  3. 파이썬 사전에서 여러 요소 삭제
  4. 성능 특성

때로는 파이썬 사전에 하나 이상의 키를 삭제하려고합니다. 여러 가지 방법으로 할 수 있습니다.

파이썬 사전 요소를 제거하는 del

한 가지 방법은 파이썬의 내장 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은 편리한 list comprehensions를 제공합니다.

>>> 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()은 런타임 오류를 피하는 데 도움이되므로 더 안전합니다.

키가 사전에 있어야한다고 확신하는 경우 전자를 사용하고 그렇지 않은 경우 전자를 사용하십시오.

관련 문장 - Python dictionary

  • 파이썬에서 키가 사전에 있는지 확인하는 방법
  • 파이썬에서 사전 키를 목록으로 얻는 방법