日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

删除json中为空的key-value键值对

發布時間:2025/3/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 删除json中为空的key-value键值对 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習json中,需要刪除嵌套json中value為空(包含'', {},[], null)的key并返回去除后的json。如果是json中沒有嵌套

data = {'name': 'Jack', 'mobile': '12345678911', 'address': '', 'ID': '', }

則可以使用如下語句:

for k in data.keys():if not data[k]:del data[k]

?因為在python3中dict.keys()是一個迭代器。迭代器在操作過程中,是不允許被修改的。所以我們要把迭代器(data.keys()),改為一個list(非迭代器),這樣我們就可以對字典操作了。其實這里我們通過list()已經把for循環迭代的對象,由原來的data.keys()變為了一個由data.keys()組成的一個list()數據了。

?

但如果是嵌套的情況,則上述方法不再適合,但是邏輯較為通用
?

data = {"first_ name": "Jane","last_ name": "Smith","email": "jane .smith@wyng.com","gender": "null","gender1": " ","gender2": "","invitations": [{"from": "1","code": "null"}],"company": {"name": "","industries": []},"address": {"city": "New York","state": "NY","zip": "10011","street": ""} }

但如果是嵌套的語句的話

def remove_empty_key(info):if isinstance(info, dict):info_re = dict()for key, value in info.items():if isinstance(value, dict) or isinstance(value, list):re = remove_empty_key(value)if len(re):info_re[key] = reelif type(value) == str and value not in ['', {}, [], 'null']:info_re[key] = valuereturn info_reelif isinstance(info, list):info_re = list()for value in info:if isinstance(value, dict) or isinstance(value, list):re = remove_empty_key(value)if len(re):info_re.append(re)elif type(value) == str and value not in ['', {}, [], 'null']:info_re.append(value)return info_reelse:print('輸入非列表/字典')

此時如果打印則不是按照json格式打印出來,因此使用如下格式進行打印

print json.dumps(data, sort_keys=True, indent=2)

那如果是想按照原來的json順序進行輸出的話,則需要在定義字典的時候

from collections import OrderedDict

同時將字典定義為如下:

new_info = OrderedDict()

?

總結

以上是生活随笔為你收集整理的删除json中为空的key-value键值对的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。