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)