python-列表包字典-字典结构格式化-经验

格式化列表包字典

# 列表包字典,字典格式化
#
# 当前有一个列表包字典
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

格式化后的效果,关注两个字典的结构
在这里插入图片描述

本经验由这个例子提练而来,并且在这个例子基础上进行了一个进阶。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值