Python 사전 찾기 Keyerror 문제 해결

Python 사전 은 보통 key 를 직접 찾 습 니 다.예 를 들 어...

dict={'a':1,'b':2,'c':3}
print(dict['a'])
하지만 찾 는 키 가 존재 하지 않 을 때 키 오류:
예 를 들 어 print 를 보 려 면(dict[d'])
이때 dict 에 이 key 가 없 기 때문에 바로 잘못 보고 합 니 다.그러면 이때 사실 python 은 우리 에 게 좋 은 해결 방법 을 제공 해 주 었 습 니 다.그것 은 바로 사용 하 는 것 입 니 다.
setdefault,용법 은 다음 과 같 습 니 다:dict.setdefault(key,[이 설정 이 존재 하지 않 는 다 면 값 을 왜 설정 하 시 겠 습 니까?기본 값 은 None 입 니 다])

그러면 여기 서 우 리 는 이 방법 으로 해결 할 수 있다.

print(dict.setdefault('d',0))
그리고 문제 가 없습니다.setdefault 는 dict 에 새 값 을 추가 하려 면 이 함 수 를 사용 하 는 것 입 니 다.단순히 찾 으 려 면 key 가 존재 하지 않 거나 이 키 를 통 해 값 을 읽 을 때 기본 값 을 얻 으 려 면 defaultdict 를 사용 하 는 것 을 권장 합 니 다.
먼저 이 이른바 defaultdict 를 소개 합 니 다.collections 모듈 에서 왔 습 니 다.collections 는 집합 모듈 입 니 다.defaultdict(functionfactory)구축 한 것 은 dictionary 와 유사 한 대상 입 니 다.그 중에서 key 의 값 은 스스로 할당 을 확인 하지만 value 의 유형 은 function 입 니 다.factory 의 클래스 인 스 턴 스,그리고 기본 값 을 가지 고 있 습 니 다.여기에 공장 함수 라 는 개념 도 도입 되 었 습 니 다.python 의 공장 함 수 는 내부 함수 들 이 모두 클래스 대상 이 고 그들 을 호출 할 때 실제 적 으로 하나의 인 스 턴 스 를 만 들 었 습 니 다.
예 를 들 어 int(),str(),set()등 이다.여기 서 우 리 는 다음 과 같은 예 를 보 자.

import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = collections.defaultdict(list)
for k, v in s:
    d[k].append(v)
print(d['yellow'])
print(d['white'])
print(list(d.items()))
우리 가 마지막 으로 얻 은 출력 결 과 는 다음 과 같다.

d 에 대응 하 는 key 가 없 을 때 마지막 으로 빈 목록 으로 돌아 오 는 것 을 볼 수 있 습 니 다.그것 은 우리 가 defaultdict 를 설정 할 때 사용 하 는 공장 함수 가 list 이 고 list 의 기본 값 은 빈 목록 입 니 다.공장 함수 가 set()이면 어떤 모습 일 까요?

import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = collections.defaultdict(set)
for k, v in s:
    d[k].add(v)
print(d['yellow'])
print(d['white'])
print(list(d.items()))
결과 출력 은 다음 과 같 습 니 다:

추가:python 오류 발생 키 오류:'longitude'
python 오류 발생 키 오류:'longitude'
오류 보고 인 터 페 이 스 는 다음 그림 과 같다.

나 는 인터넷 에서 방법 을 찾 았 는데,확실히 해결 방안 을 찾 았 다.너 에 게 유용 할 수 있 는해결 방안
그러나 내 가 해 보 았 지만 소 용이 없 었 다.그래서 내 가 눈 여 겨 보 니 또 나의 부주의 로 인 한 것 이 었 다.아,다음 그림 입 니 다.longitude 앞 에 쉼표 가 하나 빠 졌 습 니 다.
다음 그림:

그래서 이 문 제 는 해결 되 었 습 니 다.자,저 는 수업 설 계 를 계속 하 겠 습 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기