반응형
파이썬에서 사전을 반복하고 값이 같은 경우 어떻게 변경합니까?
값이 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())
반응형
'IT TIP' 카테고리의 다른 글
NetBeans에서 getter 및 setter 생성 (0) | 2020.11.26 |
---|---|
Xcode 7 프로비저닝 프로파일을 어떻게 새로 고치나요? (0) | 2020.11.26 |
동일한 앱에 여러 위젯을 추가하는 방법은 무엇입니까? (0) | 2020.11.26 |
내 .vimrc 파일의 매핑을 존중하도록 IdeaVIM을 얻는 방법이 있습니까? (0) | 2020.11.25 |
주어진 시간보다 새로운 모든 파일을 재귀 적으로 찾습니다. (0) | 2020.11.25 |