python字典的value是字典
工作需要的字典结构如下:
{'Contract Number': {'total count': 1, 'pass count': 1, 'null count': 0, 'fail count': 0}, 'DPD': {'total count': 0, 'pass count': 0, 'null count': 0, 'fail count': 0}, 'Max DPD': {'total count': 0, 'pass count': 0, 'null count': 0, 'fail count': 0}}
之前的代码:
report_info = {}
report_value_format = {'total count': 0, 'pass count': 0, 'null count': 0, 'fail count': 0}
for i in range(0, len(self.field_list)):
report_info[self.field_list[i]] = report_value_format
report_info['Contract Number']['total count'] += 1
report_info['Contract Number']['pass count'] += 1
logger.info(report_info)
发现字典里每个value中的total count和pass count都被+1了。
一通查发现, 应该是report_info中的value, 只是对report_value_format 这个字典的引用。 如果希望每个key对应的都是自己的一套value , 需要加上deepcopy, 代码如下:
report_info = {}
report_value_format = {'total count': 0, 'pass count': 0, 'null count': 0, 'fail count': 0}
for i in range(0, len(self.field_list)):
report_info[self.field_list[i]] = copy.deepcopy(report_value_format)
report_info['Contract Number']['total count'] += 1
report_info['Contract Number']['pass count'] += 1
logger.info(report_info)
就可以只更新指定key的value值了, 马克一下,省的下次自己忘了。