定制小程序开发费用Python列表元素为字典时,如何根据其中某个相同的键值进行元素合并

一、前言

定制小程序开发费用最近有粉丝咨询了一个问题,定制小程序开发费用他现在有两个列表,定制小程序开发费用它们里面的元素都为字典,而且字典都有一个键名称为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'}]
  • 1
  • 2

期望合并的结果

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

(PS:个人在用的人工智能学习网站推荐给需要的小伙伴: )


二、具体实现分析

这是粉丝写的实现代码:

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)
  • 1
  • 2
  • 3
  • 4
  • 5

通过两个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}
  • 1

a_values的值为:

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

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

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

组装后的列表值为:

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

完整示例代码:

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)
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

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


三、总结

上述代码使用了推导式和**解构字典来合并这两个知识点,他们都是非常常用的技巧,小伙伴们可以花时间去学习一下,能够让代码变得更加简洁。





👇🏻欢迎关注公众号【曲鸟讲测试开发】,获取最新教程,面试经验、Python知识分享👇🏻
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发