删除json中为空的key-value键值对
生活随笔
收集整理的這篇文章主要介紹了
删除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()數據了。
?
但如果是嵌套的情況,則上述方法不再適合,但是邏輯較為通用
?
但如果是嵌套的語句的話
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键值对的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java之包装类
- 下一篇: Python-Requests.post