복붙노트

[PYTHON] 사전 키를 사용할 수없는 경우 없음 반환

PYTHON

사전 키를 사용할 수없는 경우 없음 반환

그 키가 존재하는 경우 사전 값을 얻는 방법이 필요합니다. 그렇지 않으면 단순히 None을 반환합니다.

그러나 존재하지 않는 키를 검색하면 파이썬은 key_error를 반환합니다. 열쇠를 확인할 수 있다는 것을 알고 있지만 좀 더 노골적인 것을 찾고 있습니다. 키가 존재하지 않으면 그냥 None을 반환하는 방법이 있습니까?

해결법

  1. ==============================

    1.get ()을 사용할 수 있습니다.

    get ()을 사용할 수 있습니다.

    value = d.get(key)
    

    키가 d에 없으면 없음을 반환합니다. 없음 대신 반환되는 다른 기본값을 제공 할 수도 있습니다.

    value = d.get(key, "empty")
    
  2. ==============================

    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. ==============================

    3.dict.get 사용

    dict.get 사용

  4. ==============================

    4.dict 클래스에서 get () 메서드를 사용해야합니다.

    dict 클래스에서 get () 메서드를 사용해야합니다.

    d = {}
    r = d.get( 'missing_key', None )
    

    그러면 r == None이됩니다. 키가 사전에 없으면 get 함수는 두 번째 인수를 반환합니다.

  5. ==============================

    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. ==============================

    6.나는 보통 이와 같은 상황에 대해 defaultdict를 사용한다. 인수를 취하지 않고 새 키를 볼 때 값을 만드는 팩터 리 메서드를 제공합니다. 새 키에 빈 목록과 같은 것을 반환하려는 경우에 유용합니다 (예제 참조).

    나는 보통 이와 같은 상황에 대해 defaultdict를 사용한다. 인수를 취하지 않고 새 키를 볼 때 값을 만드는 팩터 리 메서드를 제공합니다. 새 키에 빈 목록과 같은 것을 반환하려는 경우에 유용합니다 (예제 참조).

    from collections import defaultdict
    d = defaultdict(lambda: None)
    print d['new_key']  # prints 'None'
    
  7. ==============================

    7.위의 다른 사람들처럼 get ()을 사용할 수 있습니다.

    위의 다른 사람들처럼 get ()을 사용할 수 있습니다.

    그러나 키를 확인하려면 다음을 수행 할 수도 있습니다.

    d = {}
    if 'keyname' in d:
    
        # d['keyname'] exists
        pass
    
    else:
    
        # d['keyname'] does not exist
        pass
    
  8. ==============================

    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. ==============================

    9.한 가지 해결책은 다음과 같습니다.

    한 가지 해결책은 다음과 같습니다.

    item['key'] if 'key' in item else None
    

    이는 사전 값을 새 목록에 추가 할 때 유용하며 기본값을 제공하려고합니다.

    예.

    row = [item['key'] if 'key' in item else 'default_value']
    
  10. ==============================

    10.False로 할 수 있다면 hasattr 내장 함수도 있습니다 :

    False로 할 수 있다면 hasattr 내장 함수도 있습니다 :

    e=dict()
    hasattr(e, 'message'):
    >>> False
    
  11. ==============================

    11.dict를 하위 클래스 화하고 None을 반환하여 __missing __ (self, key)를 무시할 수 있습니다.

    dict를 하위 클래스 화하고 None을 반환하여 __missing __ (self, key)를 무시할 수 있습니다.

    class MyDict(dict):
        def __missing__(self, key):
            return None
    
  12. from https://stackoverflow.com/questions/6130768/return-none-if-dictionary-key-is-not-available by cc-by-sa and MIT license