키가 존재하는 경우 사전 값을 얻거나 None
그렇지 않은 경우 단순히 반환하는 방법이 필요합니다 .
그러나 KeyError
존재하지 않는 키를 검색하면 Python에서 예외 가 발생합니다. 키를 확인할 수는 있지만보다 명확한 것을 찾고 있습니다. None
키가 존재하지 않으면 반환하는 방법 이 있습니까?
답변
당신이 사용할 수있는 dict.get()
value = d.get(key)
는 None
if 을 반환 합니다 key is not in d
. 다음 대신에 반환되는 다른 기본값을 제공 할 수도 있습니다 None
.
value = d.get(key, "empty")
답변
더 이상 궁금하지 않습니다. 언어에 내장되어 있습니다.
>>> 도움말 (dict) 모듈 내장의 클래스 dict에 대한 도움말 : 클래스 dict (객체) | dict ()-> 새로운 빈 사전 | dict (mapping)-> 매핑 객체에서 초기화 된 새 사전 | (키, 값) 쌍 ... | | 가져 오기(...) | D.get (k [, d])-> D [k] D에서 k이면 d. 그렇지 않으면 d. d의 기본값은 없음입니다. | ...
답변
사용하다 dict.get
키가 사전에있는 경우 키 값을 리턴하고 그렇지 않으면 기본값을 리턴합니다. 기본값이 지정되지 않은 경우 기본값은 없음으로 설정되므로이 메소드는 KeyError를 발생시키지 않습니다.
답변
클래스 의 get()
메소드를 사용해야합니다dict
d = {}
r = d.get('missing_key', None)
결과는 r == None
입니다. 키가 사전에 없으면 get 함수는 두 번째 인수를 반환합니다.
답변
보다 투명한 솔루션을 원하면 서브 클래스 dict
로 다음과 같은 동작을 수행 할 수 있습니다 .
class NoneDict(dict):
def __getitem__(self, key):
return dict.get(self, key)
>>> foo = NoneDict([(1,"asdf"), (2,"qwerty")])
>>> foo[1]
'asdf'
>>> foo[2]
'qwerty'
>>> foo[3] is None
True
답변
나는 보통 이와 같은 상황에 대해 기본 결정 을 사용합니다 . 인수를 취하지 않고 새 키를 볼 때 값을 작성하는 팩토리 메소드를 제공합니다. 새 키의 빈 목록과 같은 것을 반환 할 때 더 유용합니다 ( 예 참조 ).
from collections import defaultdict
d = defaultdict(lambda: None)
print d['new_key'] # prints 'None'
답변
다른 사람들이 이미 제안한 것처럼 dict
객체의 get()
방법을 사용할 수 있습니다 . 또는 정확히 수행중인 작업에 따라 다음 try/except
과 같은 제품군을 사용할 수 있습니다 .
try:
<to do something with d[key]>
except KeyError:
<deal with it not being there>
이 사건을 처리하는 데 매우 “Pythonic”접근 방식으로 간주됩니다.
