[python] Возврат Нет, если ключ словаря недоступен



4 Answers

Больше нечего. Он встроен в язык.

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

Мне нужен способ получить значение словаря, если его ключ существует, или просто вернуть None, если это не так.

Тем не менее, Python возвращает key_error, если вы ищете ключ, который не существует. Я знаю, что могу проверить ключ, но я ищу что-то более явное. Есть ли способ просто вернуть None, если ключ не существует?




Вы должны использовать метод get() из класса dict

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

Это приведет к r == None . Если ключ не найден в словаре, функция get возвращает второй аргумент.




Обычно я использую defaultdict для таких ситуаций. Вы поставляете фабричный метод, который не принимает аргументов и создает значение, когда видит новый ключ. Это более полезно, если вы хотите вернуть что-то вроде пустого списка на новые ключи ( см. Примеры ).

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



Как говорили выше, вы можете использовать get ().

Но чтобы проверить ключ, вы также можете:

d = {}
if 'keyname' in d:

    # d['keyname'] exists
    pass

else:

    # d['keyname'] does not exist
    pass



Также hasattr встроенная функция hasattr :

e={}
if hasattr(e, 'message'):
    print(e['message'])
else:
    print("no %s key" % 'message')



Related



Tags

python python