python面接問題のjson空白値


先日グループで面接問題を出して、やってみました.英語が下手で、コードが書き終わって、やっと理解が間違っていることに気づいた.この小さな問題を特別に記録します.大体の意味は、jsonに転送され、valueをnull,[],{},"",","のこのデータを削除し、任意のjsonデータに転送することができるということです.次に私が書いたコードを見てみましょう
import json
import time

z = """{
   "first_ name": "Jane",
   "last_ name": "Smith",
   "email": "jane [email protected]",
   "gender": null,

"invitations": [
{
   "from": "",
   "code": null
}
],
"company": {
    "name": "",
    "industries": {"dd":""},
    "industries1": {"dd":"1"}
},
"address": {
   "city": "New York",
    "state": "NY",
    "zip": "10011",
    "street": " "
  }
}"""


def isTrue(d):
    z = [False," "]
    if d not in z:
        return d

def jsonToEmpty(l):
    if type(l) == list:
        ll = []
        for i in l:
            z = jsonToEmpty(i)
            o = isTrue(z)
            if o:
                ll.append(z)
        if ll:
            return ll
    elif type(l) == dict:
        dd = {}
        for k,v in l.items():
            o = isTrue(v)
            if o:
                z = jsonToEmpty(o)
                o = isTrue(z)
                if o:
                    dd[k] = z
        return dd
    else:
        o = isTrue(l)
        if o:
            return o


if __name__ == '__main__':

    PP = json.loads(z)
    p = jsonToEmpty(PP)
    print(p)

コードのレベルが限られているので、グループの中で他の人が書いたのを見てもいいです.記録しました.
info_dict = {
   "first_ name": "Jane",
   "last_ name": "Smith",
   "email": "jane [email protected]",
   "gender": "null",
   "gender1": " ",
   "gender2": "",
  "invitations": [
  {
   "from": "",
   "code": "null"
  }
],
"company": {
    "name": "",
    "industries": []
},
"address": {
   "city": "New York",
    "state": "NY",
    "zip": "10011",
    "street": " "
  }
}


def extraDictList(info):
    if type(info) == dict:
        re_info: dict = {}
        for key, value in info.items():
            if type(value) == dict or type(value) == list:
                re = extraDictList(value)
                if len(re) != 0:
                    re_info[key] = re
            elif type(value) == str and value not in ["", " ", "null"]:
                re_info[key] = value
        return re_info
    elif type(info) == list:
        re_info: list = []
        for value in info:
            if type(value) == dict or type(value) == list:
                re = extraDictList(value)
                if len(re) != 0:
                    re_info.append(re)
            else:
                print("error list")
        return re_info
    else:
        print("error")

    

if __name__ == '__main__':
    re = extraDictList(info_dict)
    print(re)