Python如何检查JSON中的键是否为空值?

2024-06-09 20:54:15 发布

您现在位置:Python中文网/ 问答频道 /正文

在JSON中,我想检查和统计谁拥有学位(最高级别的学位,以及什么类型的学位),谁没有。在计算和检查硕士、博士等学位时,检查是否存在空值是有效的

JSON的一部分

  "id": 125428,
  "Degree": "Master",

不同候选人:

  ""id": 125589,
  "Degree": null,

不同候选人:

  "id": 944987,
  "Degree": "PhD"

我的相关代码如下:

mastercounter = 0
phdcounter = 0
nodeegreecounter = 0

for candidate in response["person"]:
    if item["Degree"]:
        if item["Degree"]["key"] == "Master":
            mastercounter = mastercounter + 1
        if item["license"]["key"] == "PhD":
            phdcounter = phdcounter + 1
   if item["Degree"] == None: 
       nodegreecounter = nodegreecounter + 1

我得到的错误是“TypeError:“非类型”对象不可下标”

是识别错误,还是代码/我的全部逻辑错误


Tags: key代码masteridjson类型if错误
3条回答

使用if/else怎么样

mastercounter = 0
phdcounter = 0
nodeegreecounter = 0

for candidate in response["person"]:
    if item["Degree"]:
        if item["Degree"]["key"] == "Master":
            mastercounter = mastercounter + 1
        if item["license"]["key"] == "PhD":
            phdcounter = phdcounter + 1
    else: 
       nodegreecounter = nodegreecounter + 1

请参考以下URL了解您的问题和答案的所有详细信息:

https://www.calhoun.io/how-to-determine-if-a-json-key-has-been-set-to-null-or-not-provided/

希望有用

谢谢..享受编码

这取决于JSON的组织方式。我怀疑这是一系列人的反应。像这样:

response = [{"id": "1", "Degree": "Master"}, {"id": "2", "Degree": null}]

因此,您应该使用:

for person in response:

您只需要一个人的一个属性(名为“学位”)

因此,如果一个人是一系列属性,代码将变为:

for person in response:
    if person["Degree"] is None:
        nodegreecounter = nodegreecounter + 1
    elif person["Degree"] == "Master":
        mastercounter = mastercounter + 1
    elif person["Degree"] == "PhD":
        phdcounter = phdcounter + 1

如果JSON的组织方式不同,那么在征求建议之前应该解释JSON结构

如果您的JSON如下所示:

{"key11": {"id": "1", "Degree": "Master"}, "key12": {"id": "2", "Degree": null}}

代码可以是:

for key in response:
    if response[key]["Degree"] is None:
        nodegreecounter = nodegreecounter + 1
    elif response[key]["Degree"] == "Master":
        mastercounter = mastercounter + 1
    elif response[key]["Degree"] == "PhD":
        phdcounter = phdcounter + 1

for key, person in response.items():
    if person["Degree"] is None:
        nodegreecounter = nodegreecounter + 1
    elif person["Degree"] == "Master":
        mastercounter = mastercounter + 1
    elif person["Degree"] == "PhD":
        phdcounter = phdcounter + 1

相关问题 更多 >