[PYTHON] 사전 키를 사용할 수없는 경우 없음 반환
PYTHON사전 키를 사용할 수없는 경우 없음 반환
그 키가 존재하는 경우 사전 값을 얻는 방법이 필요합니다. 그렇지 않으면 단순히 None을 반환합니다.
그러나 존재하지 않는 키를 검색하면 파이썬은 key_error를 반환합니다. 열쇠를 확인할 수 있다는 것을 알고 있지만 좀 더 노골적인 것을 찾고 있습니다. 키가 존재하지 않으면 그냥 None을 반환하는 방법이 있습니까?
해결법
-
==============================
1.get ()을 사용할 수 있습니다.
get ()을 사용할 수 있습니다.
value = d.get(key)
키가 d에 없으면 없음을 반환합니다. 없음 대신 반환되는 다른 기본값을 제공 할 수도 있습니다.
value = d.get(key, "empty")
-
==============================
2.더 이상 궁금해하지 마십시오. 그것은 언어에 내장되어 있습니다.
더 이상 궁금해하지 마십시오. 그것은 언어에 내장되어 있습니다.
>>> help(dict) Help on class dict in module builtins: class dict(object) | dict() -> new empty dictionary | dict(mapping) -> new dictionary initialized from a mapping object's | (key, value) pairs ... | | get(...) | D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. | ...
-
==============================
3.dict.get 사용
dict.get 사용
-
==============================
4.dict 클래스에서 get () 메서드를 사용해야합니다.
dict 클래스에서 get () 메서드를 사용해야합니다.
d = {} r = d.get( 'missing_key', None )
그러면 r == None이됩니다. 키가 사전에 없으면 get 함수는 두 번째 인수를 반환합니다.
-
==============================
5.좀 더 투명한 솔루션을 원하면 dict의 하위 클래스로이 동작을 얻을 수 있습니다.
좀 더 투명한 솔루션을 원하면 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
-
==============================
6.나는 보통 이와 같은 상황에 대해 defaultdict를 사용한다. 인수를 취하지 않고 새 키를 볼 때 값을 만드는 팩터 리 메서드를 제공합니다. 새 키에 빈 목록과 같은 것을 반환하려는 경우에 유용합니다 (예제 참조).
나는 보통 이와 같은 상황에 대해 defaultdict를 사용한다. 인수를 취하지 않고 새 키를 볼 때 값을 만드는 팩터 리 메서드를 제공합니다. 새 키에 빈 목록과 같은 것을 반환하려는 경우에 유용합니다 (예제 참조).
from collections import defaultdict d = defaultdict(lambda: None) print d['new_key'] # prints 'None'
-
==============================
7.위의 다른 사람들처럼 get ()을 사용할 수 있습니다.
위의 다른 사람들처럼 get ()을 사용할 수 있습니다.
그러나 키를 확인하려면 다음을 수행 할 수도 있습니다.
d = {} if 'keyname' in d: # d['keyname'] exists pass else: # d['keyname'] does not exist pass
-
==============================
8.dict 객체의 get () 메서드를 사용할 수 있습니다. 다른 메서드는 이미 제안한 메서드입니다. 또는 정확히 무엇을하고 있는지에 따라 try / except suite를 다음과 같이 사용할 수 있습니다.
dict 객체의 get () 메서드를 사용할 수 있습니다. 다른 메서드는 이미 제안한 메서드입니다. 또는 정확히 무엇을하고 있는지에 따라 try / except suite를 다음과 같이 사용할 수 있습니다.
try: <to do something with d[key]> except KeyError: <deal with it not being there>
이 사건을 처리하는 데 매우 "파이썬적인"접근 방식으로 간주됩니다.
-
==============================
9.한 가지 해결책은 다음과 같습니다.
한 가지 해결책은 다음과 같습니다.
item['key'] if 'key' in item else None
이는 사전 값을 새 목록에 추가 할 때 유용하며 기본값을 제공하려고합니다.
예.
row = [item['key'] if 'key' in item else 'default_value']
-
==============================
10.False로 할 수 있다면 hasattr 내장 함수도 있습니다 :
False로 할 수 있다면 hasattr 내장 함수도 있습니다 :
e=dict() hasattr(e, 'message'): >>> False
-
==============================
11.dict를 하위 클래스 화하고 None을 반환하여 __missing __ (self, key)를 무시할 수 있습니다.
dict를 하위 클래스 화하고 None을 반환하여 __missing __ (self, key)를 무시할 수 있습니다.
class MyDict(dict): def __missing__(self, key): return None
from https://stackoverflow.com/questions/6130768/return-none-if-dictionary-key-is-not-available by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 전체 파일 읽기 (0) | 2018.10.06 |
---|---|
[PYTHON] matplotlib 줄거리에서 내 xlabel이 왜 끊깁니까? (0) | 2018.10.06 |
[PYTHON] NumPy 배열 전치시키기 (0) | 2018.10.06 |
[PYTHON] 파이썬에서 OpenSSL AES 암호화 파일을 해독하는 방법은 무엇입니까? (0) | 2018.10.06 |
[PYTHON] 파이썬 : 런타임시 메소드와 속성 변경하기 (0) | 2018.10.06 |