首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python 3检查JSON键是否为空的条件语句

使用Python 3检查JSON键是否为空的条件语句
EN

Stack Overflow用户
提问于 2017-07-26 04:51:03
回答 1查看 9.5K关注 0票数 2

这已经更新,以澄清问题,以便它可以更好地帮助其他人在未来。

我正在尝试使用一条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语句进行哪些更改才能使其正常工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45313266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档