python 字典取(不存在)值

背景以及造成原因:

  在数据库存储的时候,常常会遇到不确定参数的情况即可变参数,在创建的时候使用JSON格式字段,将不确定key的数据放在该字段里面,后面使用该字段的时候就容易出现key不存在的情况

  情况如下图:

 

解决方式:

  1、用存在于字典的key于所查的做对比,一致就返回值,其他的就另作处理

  代码块:

dict_data = {'manager': '区域负责人',
             'pic_conf': {'pic_name_1': ['SW01']},
             'pic_path': '',
             'technique': ['技术', '技术2'],
             'fresh_time': 10,
             'switch_time': 5,
             'machine_code': ['SW01'],
             'technique_title': '技术',
             'workcenter_code': 'GF_CNC_SW',
             'production_target': [{'target_name': '2h_SW01', 'machine_code': 'SW01'}]}

val = ''
for key, value in dict_data.items():
    if key == 'name':
        val = value
print(val or None)

   效果图:

2、使用 defaultdict 模块格式化

  defaultdict接受一个工厂函数作为参数,这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0

效果图:

 

 

(1、用函数将原数据数据放进defaultdict里面

代码块:

dict_data = {'manager': '区域负责人',
             'pic_conf': {'pic_name_1': ['SW01']},
             'pic_path': '',
             'technique': ['技术', '技术2'],
             'fresh_time': 10,
             'switch_time': 5,
             'machine_code': ['SW01'],
             'technique_title': '技术',
             'workcenter_code': 'GF_CNC_SW',
             'production_target': [{'target_name': '2h_SW01', 'machine_code': 'SW01'}]}


def build_dict(old_dict: dict):
    new_dict = defaultdict(dict)
    for key, value in old_dict.items():
        new_dict[key] = value
    return new_dict


data = build_dict(dict_data)
print(data['name'] or None)

效果图:

 

(2、使用defaultdict自带的方式写入 

代码块:

from collections import defaultdict


dict_data = {'manager': '区域负责人',
             'pic_conf': {'pic_name_1': ['SW01']},
             'pic_path': '',
             'technique': ['技术', '技术2'],
             'fresh_time': 10,
             'switch_time': 5,
             'machine_code': ['SW01'],
             'technique_title': '技术',
             'workcenter_code': 'GF_CNC_SW',
             'production_target': [{'target_name': '2h_SW01', 'machine_code': 'SW01'}]}
ddd = defaultdict(dict, **dict_data)
print(ddd['name'] or None)

效果图:

 

posted @ 2022-01-05 14:29  独丨恋  阅读(950)  评论(0编辑  收藏  举报