Python字典实现健值合并和给字典添加对应健的值

Python012

Python字典实现健值合并和给字典添加对应健的值,第1张

如下图所示,顺便说一下可能的报错问题:

dict()是python的一个内建函数,如果将dict自定义为一个python字典,在之后想调用dict()函数是会报出“TypeError: 'dict' object is not callable”的错误,只需将之前自定义的变量delete掉即可。

使用集合去重 + local动态变量设置 + exec 字符串解析 可实现,话不多说,代码在下面,格式有问题调整下空格:

list_msg = [{'date':'2019-08-17', 'type':'旅游', 'over_im':'12365'},

{'date':'2019-08-17', 'type':'haha', 'over_im':'12365'},

{'date':'2019-08-18', 'type':'娱乐', 'over_im':'11234'},{'date':'2019-08-19', 'type':'生活', 'over_im':'9532'},]

# 去除字典重复的data ,获取数据包含多少天内容

set_mark = {i['date'] for i in list_msg}

# 去除非法命名字符作为列表后缀:

ver_name = [i.replace('-','_') for i in set_mark]

# 给列表排序,确保按照顺序输出变量

ver_name.sort()

# 设置动态命名模板

list_name_template = 'list_data_'

# 创建local对象,准备创建动态变量

createver = locals()

# 循环遍历数据并创建动态列表变量接收

for mark in set_mark:

# 动态创建变量

createver[list_name_template + mark.replace('-','_')] \

= [dict_current for dict_current in list_msg if dict_current['date'] == mark]

for name in ver_name:

print(list_name_template + name + ':' ,end='\t') # 打印自动创建的变量名称,采用tab分隔

exec('print('+list_name_template + name +')') # 打印变量内容(列表)

'''

打印结果

list_data_2019_08_17: [{'date': '2019-08-17', 'type': '旅游', 'over_im': '12365'}, {'date': '2019-08-17', 'type': 'haha', 'over_im': '12365'}]

list_data_2019_08_18: [{'date': '2019-08-18', 'type': '娱乐', 'over_im': '11234'}]

list_data_2019_08_19: [{'date': '2019-08-19', 'type': '生活', 'over_im': '9532'}]

'''

假设原键是

key

新建是

newkey

先删除原键值对,保存值,然后以新键插入字典

操作可以合并成一条一句

dict[newkey]

=

dict.pop(key)