IT TIP

파이썬에서 사전을 반복하고 값이 같은 경우 어떻게 변경합니까?

itqueen 2020. 11. 26. 20:33
반응형

파이썬에서 사전을 반복하고 값이 같은 경우 어떻게 변경합니까?


값이 None이면 ""(빈 문자열)로 변경하고 싶습니다.

나는 이렇게 시작하지만 잊어 버립니다.

for k, v in mydict.items():
    if v is None:
... right?

for k, v in mydict.iteritems():
    if v is None:
        mydict[k] = ''

더 일반적인 경우, 예를 들어 키를 추가하거나 제거하는 경우 루프하는 컨테이너의 구조를 변경하는 것이 안전하지 않을 수 있으므로 items독립적 인 목록 복사본에 루프를 사용 하는 것이 신중할 수 있습니다. 주어진 기존 인덱스에 다른 값을 할당 해도 문제 발생 하지 않으므로 Python 2.any에서는 iteritems.

그러나 Python3 에서는 코드가 AttributeError: 'dict' object has no attribute 'iteritems'오류를 제공 합니다. 여기 items()대신 사용 iteritems()하십시오.

이 게시물을 참조하십시오 .


값이 None 인 요소에 대한 사전 이해를 만든 다음 원본으로 다시 업데이트 할 수 있습니다.

tmp = dict((k,"") for k,v in mydict.iteritems() if v is None)
mydict.update(tmp)

업데이트 -일부 성능 테스트 수행

음, None 값의 다양한 백분율로 100 개에서 10,000 개 항목의 사전을 시도한 후 Alex의 솔루션의 성능은이 솔루션보다 약 두 배 빠릅니다.


이해력은 일반적으로 더 빠르며 mydict반복 중에 편집하지 않는 이점이 있습니다 .

mydict = dict((k, v if v else '') for k, v in mydict.items())

참고 URL : https://stackoverflow.com/questions/2315520/in-python-how-do-i-loop-through-the-dictionary-and-change-the-value-if-it-equal

반응형