首页 > 解决方案 > 如何替换和添加对象到列表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}]

谢谢..

标签: pythonarraysdictionary

解决方案


有很多方法可以解决这个问题,但利用 python 中的字典现在保留插入顺序(3.7 实现细节,3.8 标准)这一事实,您可以这样做:

  1. 填充字典,id用作键
  2. 如果发现冲突,则仅在has_hub为真时覆盖
  3. 将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())

推荐阅读