格式化列表包字典
# 列表包字典,字典格式化
#
# 当前有一个列表包字典
data_list = [{"name":"张三", "age":18},{"name":"李四", "age":28, "m_time":1234567}]
# 期望字典数据格式化一下,统一删除指定的键值对,对没有的键值对进行添加(有的不动)
# 期望格式: [{'name': '张三', 'm_time': 0}, {'name': '李四', 'm_time': 1234567}]
print("原始的数据如下:")
print(data_list)
# 遍历列表,依次获得字典
for data in data_list:
# 如果字典中存在age键就删掉
if "age" in data:
data.pop("age")
# 如果字典中不存在m_time,那就添加一个m_time的键值对(存在就不动它)
if "m_time" not in data:
data["m_time"] = 0
else:
print("处理完毕,结果如下=======")
# 输出最终的结果
print("关注效果,张三李四的age键值对都消失了,张三字典因为没有m_time,所以添加了一个键值对,给了他默认值,李四字典有m_time键值对,所以不对他原有的数据做修改")
print(data_list)
C:\Users\python_hui\Anaconda3\python.exe G:/易二/bin/1111.py
原始的数据如下:
[{‘name’: ‘张三’, ‘age’: 18}, {‘name’: ‘李四’, ‘age’: 28, ‘m_time’: 1234567}]
处理完毕,结果如下=======
关注效果,张三李四的age键值对都消失了,张三字典因为没有m_time,所以添加了一个键值对,给了他默认值,李四字典有m_time键值对,所以不对他原有的数据做修改
[{‘name’: ‘张三’, ‘m_time’: 0}, {‘name’: ‘李四’, ‘m_time’: 1234567}]
Process finished with exit code 0
应用情景
列表要去重,需删除其中的字典。
删除的时候,需要确保两者的数据是一样的。
因此需要一个函数格式化处理一下selected_data
处理办法
# 作者:pyhui
def fmt_2_all_knowledge(data_dict):
"""
格式化为all_knowledge的结构
接收一个字典
按照all_knowledge的格式,把字典中多出的键除掉
:param data_dict:
:return:格式化好的字典,结构同all_knowledge
"""
if "score" in data_dict: data_dict.pop("score")
if "level" in data_dict: data_dict.pop("level")
if "m_time" in data_dict: data_dict.pop("m_time")
return data_dict
格式化后的效果,关注两个字典的结构
本经验由这个例子提练而来,并且在这个例子基础上进行了一个进阶。