사전 키를 사용할 수 없으면 None을 반환합니다.
키가 존재하는 경우 사전 값을 얻거나 존재 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
클래스 의 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"접근 방식으로 간주됩니다.
한 줄 해결책은 다음과 같습니다.
item['key'] if 'key' in item else None
새 목록에 사전 값을 추가하고 기본값을 제공하려는 경우에 유용합니다.
예.
row = [item['key'] if 'key' in item else 'default_value']
다른 사람들이 위에서 말했듯이 get ()을 사용할 수 있습니다.
그러나 키를 확인하기 위해 다음을 수행 할 수도 있습니다.
d = {}
if 'keyname' in d:
# d['keyname'] exists
pass
else:
# d['keyname'] does not exist
pass
__missing__(self, key)
dict를 서브 클래 싱하여 재정의 하고 None을 반환 할 수 있습니다 .
class MyDict(dict):
def __missing__(self, key):
return None
당신이 그것을 함께 할 수 있다면 False
, 다음, 거기에 또한 으로 hasattr 내장 된 연료 소모량은 :
e=dict()
hasattr(e, 'message'):
>>> False
참고 URL : https://stackoverflow.com/questions/6130768/return-none-if-dictionary-key-is-not-available
'Programming' 카테고리의 다른 글
Java int to String-Integer.toString (i) 대 새로운 Integer (i) .toString () (0) | 2020.02.19 |
---|---|
MSB3247 해결-동일한 종속 어셈블리의 다른 버전간에 충돌이 발견되었습니다. (0) | 2020.02.19 |
Git을 사용하여 한 분기에 있지만 다른 분기에는없는 모든 커밋을 표시하십시오. (0) | 2020.02.19 |
Java Hashmap : 가치에서 키를 얻는 방법? (0) | 2020.02.19 |
git에서 파일을 일시적으로 추적 해제 (0) | 2020.02.19 |