欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python字段列表清洗工具

程序员文章站 2022-08-26 15:51:21
python字典列表清洗器 场景 在写api的时候, 很多数据来源于第三方, 原始API接口返回的数据很多并不是我们想要的, 我们需要对原始数据进行筛选. 示例 原始数据如下 我们只需要如下字段 最终结果 实现 代码如下 ......

python字典列表清洗器

场景

在写api的时候, 很多数据来源于第三方, 原始api接口返回的数据很多并不是我们想要的, 我们需要对原始数据进行筛选.

示例

  • 原始数据如下

    原始数据 = [
                    {
                          'os-flv-disabled:disabled': false,
                          'os-flv-ext-data:ephemeral': 0,
                          'disk': 50,
                          'ephemeral': 0,
                          'extra_specs': munch({}),
                          'id': 'abb677c9-1bf2-415d-97bd-ef62574690ed',
                          'is_disabled': false,
                          'is_public': true,
                          'location': {'cloud': '43.254.45.115',
                                       'project': {'domain_id': none,
                                                   'domain_name': none,
                                                   'id': '3fb8e4b969eb4db8a67a6d576fc2070c',
                                                   'name': none},
                                       'region_name': none,
                                       'zone': none},
                          'name': 'wangjw',
                          'os-flavor-access:is_public': true,
                          'properties': {'os-flv-disabled:disabled': false,
                                         'os-flv-ext-data:ephemeral': 0,
                                         'os-flavor-access:is_public': true},
                          'ram': 4096,
                          'rxtx_factor': 1.0,
                          'swap': 0,
                          'vcpus': 2
                    },
                    ...
    
    	]
    
  • 我们只需要如下字段

    所需字段 = ["name", "id", "ram", "vcpus", "disk", "is_disabled", "is_public"]
    
  • 最终结果

    最终结果 =[
        {
              'disk': 50,
              'id': 'abb677c9-1bf2-415d-97bd-ef62574690ed',
              'is_disabled': false,
              'is_public': true,
              'name': 'wangjw',
              'ram': 4096,
              'vcpus': 2
        },
        ...
    ]
    

实现

代码如下

#!/usr/bin/env python
# ~*~ coding: utf-8 ~*~

def map_clean(source_key_list, dict):
    """清洗字典
    :param source_key:目标查找字段
    :param dict: 目标字典
    :return:清洗后的字典
    """
    tmp = {}
    for k, v in dict.items():
        if k in source_key_list:
            tmp[k] = v
        else:
            continue
    return tmp

if __name__ == "__main__":
    source_key_list = ["name", "id", "ram", "vcpus", "disk", "is_disabled", "is_public"]
    dict = 原始数据
    最终数据 =  map_clean(source_key_list, dict)