"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python에서 반복하는 동안 사전에서 항목을 안전하게 삭제하는 방법은 무엇입니까?

Python에서 반복하는 동안 사전에서 항목을 안전하게 삭제하는 방법은 무엇입니까?

2024년 11월 12일에 게시됨
검색:951

How to Safely Delete Items from a Dictionary While Iterating in Python?

반복적인 사전 수정

사전을 반복하는 동시에 사전에서 항목을 삭제해야 하는 것이 일반적입니다. 그러나 이 작업은 Python에서 기본적으로 지원되지 않습니다.

사전을 반복하는 동안 사전을 수정하면 오류가 발생할 수 있습니다. 예를 들어, 제공한 코드 조각은 Python 3에서 다음 오류와 함께 실패할 수 있습니다.

RuntimeError: dictionary changed size during iteration.

Python 3 Solution

Python 3에서 해결책은 사전에서 키 목록을 생성하고 대신 해당 목록을 반복하는 것입니다. 예는 다음과 같습니다.

# Python 3 or higher

for k in list(mydict.keys()):
    if mydict[k] == 3:
        del mydict[k]

이 접근 방식은 목록이 불변이고 사전 변경에 영향을 받지 않기 때문에 작동합니다.

Python 2 솔루션

Python 2에서 키() 메서드는 반복 중에 수정할 수 없는 반복자를 반환합니다. 사전을 수정하려면 다음 접근 방식을 사용할 수 있습니다.

# Python 2

for k, v in mydict.items():
    if v == 3:
        del mydict[k]

Python 2에서는 반복자를 목록으로 변환할 수도 있습니다:

for k in mydict.keys():
    if mydict[k] == 3:
        del mydict[k]

대체 접근 방법

또는 pop() 메서드를 사용하여 반복하는 동안 사전에서 항목을 삭제할 수 있습니다.

for k in list(mydict.keys()):
    if k == 3:
        mydict.pop(k)

이 접근 방식은 추가 목록을 생성하지 않기 때문에 더 효율적입니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3