2017-05-23 4 views
0

dict에 특정 키가있는 모든 오브젝트를 추출하려고하는데 일부 dict에는 모든 키가 들어 있지 않으므로 keyError를 무시하고 계속 진행하고 싶습니다. I`ve는 시도로와를 제외하고이 일의 일부 구현을 볼 수 있지만리스트리스트 내에서 keyError 무시하기

allValues = [] 
for dictionary in masterDict: 
    values = [(dictionary[x]) for x in keysArray] 
    allValues.append(values) 
+1

예상되는 출력은 무엇입니까? 누락 된 키를 생략하고 기본값으로 바꾸어야합니까? – jonrsharpe

+1

그냥 루핑을 계속하기위한 열쇠가 없다면 – immexerxez

+0

그건 내 질문에 실제로 대답하지 않습니다. 입력과 출력의 예를 보여주십시오. 'len (values) == len (keysArray)'이어야합니까? – jonrsharpe

답변

9

당신은 지능형리스트필터을 사용해야 내 경우에는 작동하지 않습니다

values = [dictionary[x] for x in keysArray if x in dictionary]

그래서 파이썬은 먼저 x in dictionary이 있는지 확인합니다. 그렇지 않은 경우 x은 무시됩니다. 그렇지 않으면 dictionary[x]이 사전에 추가됩니다.

경우

당신이 하지이 값을 무시하고 싶어하지만, 목록에 대체 값를 추가, 당신은 사용할 수 있습니다

fallback는 "대체 값"입니다
values = [dictionary.get(x,fallback) for x in keysArray]

.

+1

이것을 우아하게 정리해 주셔서 감사합니다. 크게 감사드립니다. – immexerxez