ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

删除字典空值

2019-08-06 19:50:48  阅读:192  来源: 互联网

标签:null 删除 res list 空值 dict isinstance data 字典


# info = {
#     "name": "abc",
#     "age": "",
#     "info": {
#         "height": [1, 0, {'a': 123, 'b': 0, 'c': [], 'd': [1]}],
#         "weight": " ",
#         "gender": "man",
#         "addr": " ",
#         "tel": 123456789
#     },
#     "hobby": [
#         123,
#         0,
#         False,
#         "abx",
#         True,
#         {
#             "basketball": True,
#             "football": False
#         },
#         [
#             123,
#             0,
#             False,
#             "abx",
#             True,
#             {
#                 "basketball": True,
#                 "football": False
#             }
#         ]
#     ]
# }
#
#
# def del_null_list(data):
#     res = []
#     for item in data:
#         if isinstance(item, str) or isinstance(item, int) or isinstance(item, bool):
#             if item:
#                 res.append(item)
#         elif isinstance(item, dict):
#             dict_res = del_null_dict(item)
#             if dict_res:
#                 res.append(dict_res)
#         elif isinstance(item, list):
#             list_res = del_null_list(item)
#             if list_res:
#                 res.append(list_res)
#     return res
#
#
# def del_null_dict(data):
#     res = {}
#     for k in data:
#         if isinstance(data[k], str):
#             data[k] = data[k].strip()
#             if data[k]:
#                 res[k] = data[k]
#         elif isinstance(data[k], int) or isinstance(data[k], bool):
#             if data[k]:
#                 res[k] = data[k]
#         elif isinstance(data[k], dict):
#             ret = del_null_dict(data[k])
#             if ret:
#                 res[k] = ret
#         elif isinstance(data[k], list):
#             list_res = del_null_list(data[k])
#             if list_res:
#                 res[k] = list_res
#     return res
#
#
# def del_null(data):
#     res = {}
#     for k in data:
#         if isinstance(data[k], str):
#             data[k] = data[k].strip()
#             if data[k]:
#                 res[k] = data[k]
#         elif isinstance(data[k], int) or isinstance(data[k], bool):
#             if data[k]:
#                 res[k] = data[k]
#         elif isinstance(data[k], dict):
#             dict_res = del_null_dict(data[k])
#             if dict_res:
#                 res[k] = dict_res
#         elif isinstance(data[k], list):
#             list_res = del_null_list(data[k])
#             if list_res:
#                 res[k] = list_res
#     return res
#
#
# r = del_null(info)
# print(r)


info = {
    "name": "abc",
    "age": "",
    "info": {
        "height": [1, 0, {'a': 123, 'b': 0, 'c': [], 'd': [1]}],
        "weight": " ",
        "gender": "man",
        "addr": " ",
        "tel": 123456789
    },
    "hobby": [
        123,
        0,
        False,
        "abx",
        True,
        {
            "basketball": True,
            "football": False
        },
        [
            123,
            0,
            False,
            "abx",
            True,
            {
                "basketball": True,
                "football": False
            }
        ]
    ]
}


def del_null_list(data):
    res = []
    for item in data:
        if isinstance(item, str) or isinstance(item, int) or isinstance(item, bool):
            if item:
                res.append(item)
        elif isinstance(item, dict):
            dict_res = del_null_dict(item)
            if dict_res:
                res.append(dict_res)
        elif isinstance(item, list):
            list_res = del_null_list(item)
            if list_res:
                res.append(list_res)
    return res


def del_null_dict(data):
    res = {}
    for k in data:
        if isinstance(data[k], str):
            data[k] = data[k].strip()
            if data[k]:
                res[k] = data[k]
        elif isinstance(data[k], int) or isinstance(data[k], bool):
            if data[k]:
                res[k] = data[k]
        elif isinstance(data[k], dict):
            ret = del_null_dict(data[k])
            if ret:
                res[k] = ret
        elif isinstance(data[k], list):
            list_res = del_null_list(data[k])
            if list_res:
                res[k] = list_res
    return res


def del_null(data):
    res = {}
    for k in data:
        if isinstance(data[k], str):
            data[k] = data[k].strip()
            if data[k]:
                res[k] = data[k]
        elif isinstance(data[k], int) or isinstance(data[k], bool):
            if data[k]:
                res[k] = data[k]
        elif isinstance(data[k], dict):
            dict_res = del_null_dict(data[k])
            if dict_res:
                res[k] = dict_res
        elif isinstance(data[k], list):
            list_res = del_null_list(data[k])
            if list_res:
                res[k] = list_res
    return res


r = del_null(info)
print(r)

 

标签:null,删除,res,list,空值,dict,isinstance,data,字典
来源: https://www.cnblogs.com/chweb/p/11311390.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有