나는 문을 제외하고 시도의 긴 목록을 가지고 :파이썬에서 Try-Except 구문의 긴 목록을 간략하게 대체 하시겠습니까?
try:
uri = entry_obj['media$group']['media$content'][0]['url']
except (KeyError, IndexError):
uri = None
try:
position = entry_obj['yt$position']['$t']
except KeyError:
position = None
try:
description = entry_obj['content']['$t']
except KeyError:
description = None
try:
seconds = entry_obj['media$group']['yt$duration']['seconds']
except KeyError:
seconds = None
try:
thumbnails = entry_obj['media$group']['media$thumbnail']
except KeyError:
thumbnails = None
이 작성하는 더 간결한 방법이 있나요?
+1 비슷한 일을 반복적으로 수행 할 때 뭔가를 일반적으로 수행하는 함수를 작성합니다. 나는 종종 프로그래머가 이것을하지 않는 빈도에 놀란다. 두 번째 버전은 나에게보기 흉하게 보인다. 이제 키는 공백을 포함 할 수 없으며 목록의 dicts 또는 int에있는 문자열 이외의 다른 문자가 될 수 없습니다. 첫 번째 것은 중첩 된 컨테이너에서 키의 체인을 찾는 것을 지원합니다. 여기서 필요한 것은'__getitem__'을 지원하고 키가 발견되지 않으면 KeyError 또는 IndexError를 던집니다. 항상 긴 긴 문자열을 입력하고 .split() 직접 입력 할 수 있습니다. – Ben
그래, 두 번째는 문자열과 int 만 지원하며 문자열에는 공백이 포함될 수 없다는 제한이 있습니다. – kindall
kindall, 방금 try-excepts를 대체하기 위해 방금 게시 한 방법에 대해 어떻게 생각합니까? 나는 파이썬에 익숙하지 않으므로 람다의 나쁜 사용인지 확신 할 수 없다. – Michael