json 데이터에서 생성 된 큰 파이썬 사전을 가지고 있으며, 큰 파이썬 사전에서 작은 dict을 생성하고 있습니다. 큰 사전의 일부 요소에는 '세부 정보'라는 키가 있고 일부 요소에는 키가 없습니다. 내가하고 싶은 일은 큰 사전의 각 엔트리에 키가 있는지 확인하고 그렇지 않은 경우 키 'details'에 'No details available'값을 새 사전에 추가합니다. 아래 예제 코드를 데모로 사용하고 있습니다. LargeDict는 코드의 많은 키들로 훨씬 더 커지지 만, 명확성을 위해 간단하게 유지하고 있습니다.사전에 키가 있는지 확인하십시오. 그렇지 않다면 추가하십시오.
LargeDict = {'results':
[{'name':'john','age':'23','datestart':'12/07/08','department':'Finance','details':'Good Employee'},
{'name':'barry','age':'26','datestart':'25/08/10','department':'HR','details':'Also does payroll'},
{'name':'sarah','age':'32','datestart':'13/05/05','department':'Sales','details':'Due for promotion'},
{'name':'lisa','age':'21','datestart':'02/05/12','department':'Finance'}]}
이 내가 SmallDict에 대한 데이터를 얻고 방법은 다음과 같습니다 큰 DICT 항목 중 하나는 더 세부 사항이없는 경우
SmallDict = {d['name']:{'department':d['department'],'details':d['details']} for d in LargeDict['results']}
내가 그러나 키 오류가 발생합니다. 내가 올바르게
DefaultDict
모듈을 사용해야한다고 말하는 것이 더 쉬운가?
1 dict.setdefault (워드 프로세서)() : "키가 사전에있는 경우 그렇지 않은 경우, 그 값을 돌려 줄 기본 및 반환 값으로 키를 삽입합니다. 기본값이며 기본값은 없음입니다. " – heltonbiker
예. 이것을 사용하십시오. defaultdict는 부주의 한 사람을위한 사악한 생물이다. – javadba
FWIW, 나는'defaultdict'가 훌륭하다고 생각합니다. 주로, 다른 소스에서 얻은 정규 dict을'defaultdict '로 변환하는 것이 가치 있다고 생각하지 않습니다. 'defaultdict'의 "악마"는 단순히'default_factory' 속성을'None'으로 설정함으로써 회피 될 수 있습니다 (이것은 다시 한번 일반 dict처럼 행동하게합니다). – mgilson