【问题标题】:Merge list of dict and add new values合并dict列表并添加新值
【发布时间】:2021-11-10 09:58:24
【问题描述】:

我需要在不使用熊猫的情况下按条件合并 2 个字典列表

x1 - 事实值

x1 = [{'id': '94ffe1d6-0afa-11ec-b139-4cd98f4d62e3',
  'fact_group': '0.05',
  'probability': 0.2},
 {'id': '86ae0229-0af8-11ec-be8c-4cd98f847094',
  'fact_group': '0.05',
  'probability': 0.56},
 {'id': '867ef7ac-0af8-11ec-be8c-4cd98f847094',
  'fact_group': '0.2',
  'probability': 0.31},
 {'id': '211bc00c-0af6-11ec-b139-4cd98f4d62e3',
  'fact_group': '0.2',
  'probability': 0.96}]

x2 - 带有到标签点的间隔概率的字典列表

x2 = [{'group': 0.05,
  'predict_labels': 0,
  'predict_intervals_min': 0.00,
  'predict_intervals_max': 0.6},
 {'group': 0.05,
  'predict_labels': 1,
  'predict_intervals_min': 0.6,
  'predict_intervals_max': 1.0},
 {'group': 0.2,
  'predict_labels': 2,
  'predict_intervals_min': 0.0,
  'predict_intervals_max': 0.45},
 {'group': 0.2,
  'predict_labels': 3,
  'predict_intervals_min': 0.45,
  'predict_intervals_max': 1.0}]

我需要通过x1['fact_group'] & x2['group'] 合并它们 和x1['probability']>=x2['predict_intervals_min']x1['probability']<x2['predict_intervals_max']

预期:通过阈值和组更新 x2['predict_labels'] 来更新 x1

x3 = [{'id': '94ffe1d6-0afa-11ec-b139-4cd98f4d62e3',
  'predict_labels': 1,
  'fact_group': '0.05',
 'predict_labels': 0,
  'probability': 0.2},
 {'id': '86ae0229-0af8-11ec-be8c-4cd98f847094',
  'predict_labels': 1,
  'fact_group': '0.05',
  'predict_labels': 0,
  'probability': 0.56},
 {'id': '867ef7ac-0af8-11ec-be8c-4cd98f847094',
  'fact_group': '0.2',
  'predict_labels': 2,
  'probability': 0.31},
 {'id': '211bc00c-0af6-11ec-b139-4cd98f4d62e3',
  'fact_group': '0.2',
  'predict_labels': 3,
  'probability': 0.96}]

【问题讨论】:

    标签: python json list dictionary merge


    【解决方案1】:

    我建议你这个简单的解决方案:

    result = []
    
    for y1 in x1:
        for y2 in x2:
            if (y1['fact_group'] == str(y2['group'])) and \
               (y1['probability'] >= y2['predict_intervals_min']) and \
               (y1['probability'] <  y2['predict_intervals_max']):
                d = y1
                d['predict_labels'] = y2['predict_labels']
                result.append(d)
    
    print(result)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-22
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多