python - 如何替换和添加对象到列表python
问题描述
return_so = [{'id': 1, 'has_hub': False}, {'id': 2, 'has_hub': False}, {'id': 3, 'has_hub': False}]
hub_so = [{'id': 1, 'has_hub': True}, {'id': 62, 'has_hub': True}, {'id': 13, 'has_hub': True}, {'id': 2, 'has_hub': True}]
嗨,我想合并 2 个数组,当“id”有一个重复的字典时,我想选择那个has_hub = True
expected result = [{'id': 1, 'has_hub': True}, {'id': 2, 'has_hub': True}, {'id': 3, 'has_hub': False}, {'id': 62, 'has_hub': True}, {'id': 13, 'has_hub': True}]
谢谢..
解决方案
有很多方法可以解决这个问题,但利用 python 中的字典现在保留插入顺序(3.7 实现细节,3.8 标准)这一事实,您可以这样做:
- 填充字典,
id
用作键 - 如果发现冲突,则仅在
has_hub
为真时覆盖 - 将dict转换回列表
这里是:
d = {} #create dict
for item in return_so + hub_so:
if item['id'] not in d or item['has_hub']:
d[item['id']] = item
expected_result = list(d.values())
推荐阅读
- r - as.Date 返回 NA 日期格式
- unix - 用换行符替换字符组
- mysql - django queryset union 不能仅使用
- html - 为什么这些单选按钮没有显示?如何使它们可见?
- c++ - 如何更改结构的字节顺序?
- node.js - 有没有办法在Javascript中的Tensorflow手势模型中找到手到相机的距离?
- sql - AWS Glue 作业失败,错误日志为空
- javascript - 如何在不渲染的情况下获取 vue 组件的 DOM?
- php - 我可以在使用 jquery ajax 的表单提交上同时调用同一个 php 页面上的方法以及另一个 php 代码中的方法吗?
- python - 带有 ModelSelect2Widget 的 AttributeError