test_json.has_key(['response'][0]['user']['first_name'])
test_json.has_key(['response'][0]['user']['first_name'])
def has_nested_key(dict_or_list, *keys): for key in keys: try: dict_or_list = dict_or_list[key] except (KeyError, IndexError): return False return True # usage data = {'response': [{'user':{'first_name': 'some_name'}}]} print has_nested_key(data, 'response', 0, 'user', 'first_name') print has_nested_key(data, 'response', 0, 'user', 'last_name') print has_nested_key(data, 'response', 1, 'user', 'first_name')
from collections import defaultdict def tree(): return defaultdict(tree) lupin = tree() lupin["express"][3] = "stand and deliver"
chandНет, по всем проверяет.
Если я правильно понял, то функция проверяет только первый ключ, с set который передали.
chandТочно, можно и так
Вы натолкнули на мысль, что можно просто использовать try и ловить KeyError
. Только если в словаре могут быть списки, то надо еще IndexError ловить. И с функцией можно несколько строчек сэкономить, но это уже от использования зависит.x.append(3)?