【问题标题】:how to replace and add object to list python如何替换和添加对象到列表python
【发布时间】:2020-11-23 04:40:50
【问题描述】:
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 arrays dictionary


    【解决方案1】:

    有很多方法可以解决这个问题,但是利用 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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      • 2020-10-08
      • 2023-03-31
      • 2019-09-13
      • 1970-01-01
      相关资源
      最近更新 更多