Python编程根据字典列表相同键的值进行合并


Posted in Python onOctober 05, 2021

一、前言

今天有粉丝咨询了一个问题,他现在有两个列表,它们的元素都为字典,且字典都有一个key为id,现在想把这两个字典根据id合并为一个字典,类型下面的效果:

两个列表的数据为:

a_list = [{'id': 1, 'value': 11}, {'id': 2, 'value': 22}, {'id': 3, 'value': 33}]
b_list = [{'id': 1, 'name': 'a'}, {'id': 2, 'name': 'b'}, {'id': 3, 'name': 'c'}]

期望合并的结果

[{'id': 1, 'name': 'a', 'value': 11},
 {'id': 2, 'name': 'b', 'value': 22},
 {'id': 3, 'name': 'c', 'value': 33}]

二、实现分析

这是粉丝写的实现代码:

for i in range(len(b_list)):
    for a in a_list:
        if b_list[i]['id'] == a['id']:
            b_list[i]['value'] = a['value']
print(b_list)

通过两个for循环来将a_list中元素字典id值等于b_list元素字段id值的值加入到对应的b_list元素字典中。

实际上两行代码就可以解决这个问题:

1.我们可以先通过推导式将a_list重新组装为{id:value}的形式

a_values = {a['id']: a['value'] for a in a_list}

a_values的值为:

{1: 11, 2: 22, 3: 33}

2.然后再通过推导式和字典解构再合并的方式将值与b_list重新组装:

res_list = [{**b, **{'value': a_values[b['id']]}} for b in b_list]

组装后的列表值为

res_list的值为: 
[{'id': 1, 'name': 'a', 'value': 11},
 {'id': 2, 'name': 'b', 'value': 22}, 
 {'id': 3, 'name': 'c', 'value': 33}]

完整示例代码

a_list = [{'id': 1, 'value': 11}, {'id': 2, 'value': 22}, {'id': 3, 'value': 33}]
b_list = [{'id': 1, 'name': 'a'}, {'id': 2, 'name': 'b'}, {'id': 3, 'name': 'c'}]
a_values = {a['id']: a['value'] for a in a_list}
res_list = [{**b, **{'value': a_values[b['id']]}} for b in b_list]
print('res_list的值为:', res_list)

当然一行代码也可以搞定,直接把两个推导式合并

res_list = [{**b, **{'value': {a['id']: a['value'] for a in a_list}[b['id']]}} for b in b_list]

但这就是为了装X而写代码了,毫无必要!

三、总结

就是推导式和字典通过**解构来合并这两个知识点。

以上就是Python学习字典列表根据相同键的值进行合并的详细内容,更多关于Python字典列表键值合并的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中的rjust()方法使用详解
May 19 Python
Python捕捉和模拟鼠标事件的方法
Jun 03 Python
Python中使用Queue和Condition进行线程同步的方法
Jan 19 Python
简单实现python数独游戏
Mar 30 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
python redis 删除key脚本的实例
Feb 19 Python
python中class的定义及使用教程
Sep 18 Python
python实现智能语音天气预报
Dec 02 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
Python turtle编写简单的球类小游戏
Mar 31 Python
python编程简单几行代码实现视频转换Gif示例
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 #Python
使用pipenv管理python虚拟环境的全过程
Sep 25 #Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 #Python
Python天气语音播报小助手
用python基于appium模块开发一个自动收取能量的小助手
Python实现打乒乓小游戏
You might like
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
php网页病毒清除类
2014/12/08 PHP
php自定义错误处理用法实例
2015/03/20 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
jquery等待效果示例
2014/05/01 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
图解js图片轮播效果
2015/12/20 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
基于JavaScript实现幸运抽奖页面
2020/07/05 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
python类继承用法实例分析
2014/10/10 Python
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
python中的decimal类型转换实例详解
2019/06/26 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
办理退休介绍信
2014/01/09 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
Java基础-封装和继承
2021/07/02 Java/Android