删除json中为空的key-value键值对
生活随笔
收集整理的這篇文章主要介紹了
删除json中为空的key-value键值对
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
學(xué)習(xí)json中,需要?jiǎng)h除嵌套json中value為空(包含'', {},[], null)的key并返回去除后的json。如果是json中沒有嵌套
data = {'name': 'Jack', 'mobile': '12345678911', 'address': '', 'ID': '', }則可以使用如下語(yǔ)句:
for k in data.keys():if not data[k]:del data[k]?因?yàn)樵趐ython3中dict.keys()是一個(gè)迭代器。迭代器在操作過(guò)程中,是不允許被修改的。所以我們要把迭代器(data.keys()),改為一個(gè)list(非迭代器),這樣我們就可以對(duì)字典操作了。其實(shí)這里我們通過(guò)list()已經(jīng)把for循環(huán)迭代的對(duì)象,由原來(lái)的data.keys()變?yōu)榱艘粋€(gè)由data.keys()組成的一個(gè)list()數(shù)據(jù)了。
?
但如果是嵌套的情況,則上述方法不再適合,但是邏輯較為通用
?
但如果是嵌套的語(yǔ)句的話
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('輸入非列表/字典')此時(shí)如果打印則不是按照json格式打印出來(lái),因此使用如下格式進(jìn)行打印
print json.dumps(data, sort_keys=True, indent=2)那如果是想按照原來(lái)的json順序進(jìn)行輸出的話,則需要在定義字典的時(shí)候
from collections import OrderedDict同時(shí)將字典定義為如下:
new_info = OrderedDict()?
總結(jié)
以上是生活随笔為你收集整理的删除json中为空的key-value键值对的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java之包装类
- 下一篇: pytorch基础函数学习