这已经更新,以澄清问题,以便它可以更好地帮助其他人在未来。
我正在尝试使用一条if语句来测试键classes
是否存在于使用Python的JSON结构中。使用Python检查JSON结构中是否存在键。我可以得到密钥,但需要帮助找出条件应该是什么,以检查它是否存在。
当键class
存在于JSON结构中时,我使用以下代码成功地返回了它的值:
#Parameter: json_data - The JSON structure it is checking
def parse_classes(json_data):
lst = list()
if('classes' is in json_data['images'][0]['classifiers'][0]): #This doesn't work
for item in json_data['images'][0]['classifiers'][0]['classes']:
lst.append(item['class'])
else:
lst = None
return(lst)
json_data
**:** 示例
{"images": ["classifiers": ["classes": ["class": "street"]]]}
我的问题似乎在第4行,问题似乎是条件语句是不正确的。我需要对if语句进行哪些更改才能使其正常工作?
发布于 2017-07-26 04:55:46
我想你指的是if
而不是for
def parse_classes(json_data):
lst = set()
if 'classes' in json_data['images'][0]['classifiers'][0]:
for item in json_data['images'][0]['classifiers'][0]['classes']:
lst.add(item['class'])
else:
print("")
return lst
或防御性的
def parse_classes(json_data):
lst = set()
if (json_data.get('images')
and json_data['images'][0].get('classifiers')
and json_data['images'][0]['classifiers'][0].get('classes')):
for item in json_data['images'][0]['classifiers'][0].get('classes', []):
lst.add(item['class'])
return lst if lst else None
如果您希望所有classifiers
中的所有images
中的所有class
def parse_classes(json_data):
lst = set()
for image in json_data.get('images', []):
for classifier in image.get('classifiers', []):
for item in classifier.get('classes', []):
lst.add(item['class'])
return lst if lst else None
https://stackoverflow.com/questions/45313266
复制相似问题