python - 字典: how to compare values and merge if values are the same?

标签 python

如果我有两个字典:

 [{u'id': 217110,
  u'label': u'Business A',
  u'score': 0},
 {u'id': 217111,
  u'label': u'Business B',
  u'score': 0},
 {u'id': 217112,
  u'label': u'Business Yada Yada',
  u'score': 0'}]

[{u'City': u'Damariscotta',
  u'EntityType': u'Maine Public',
  u'EntityTypeCode': u'1',
  u'Status1': u'Open',
  u'ID': u'0188',
  u'Name1': u'A Company 000',
  u'UpdateTimeUnix': 1363756455},
{u'City': u'Santa Barbra',
  u'EntityType': u'California Public',
  u'EntityTypeCode': u'1',
  u'Status1': u'Delayed',
  u'ID': u'1001',
  u'Name1': u'Business A',
  u'UpdateTimeUnix': 1363758764},
{u'City': u'Boise',
  u'EntityType': u'Idaho Public',
  u'EntityTypeCode': u'1',
  u'Status1': u'Closed',
  u'ID': u'1012',
  u'Name1': u'Business Yada Yada',
  u'UpdateTimeUnix': 1363759375},
{u'City': u'Elkhart',
  u'EntityType': u'Indiana Public',
  u'EntityTypeCode': u'1',
  u'Status1': u'Open',
  u'ID': u'1016',
  u'Name1': u'Business B',
  u'UpdateTimeUnix': 1363826341}]

简而言之,获得此效果的有效方法是什么?:

 [{u'id': 217110,
  u'label': u'Business A',
  u'score': 0,
  u'Status1': u'Delayed'},
 {u'id': 217111,
  u'label': u'Business B',
  u'score': 0,
  u'Status1': u'Open'},
 {u'id': 217112,
  u'label': u'Business Yada Yada',
  u'score': 0',
  u'Status1': u'Open'}]

最佳答案

使用operator.itemgetter:

from operator import itemgetter
key1 = itemgetter("Name1")
key2 = itemgetter("label")
key3 = itemgetter("Status1")
for record in b: # this is the longer list of dicts
    k = key1(record)
    for record2 in a: #this is the shorter one
        if key2(record2) == k:
            record2['Status1'] = key3(record)

print a

输出:

[{u'score': 0, 'Status1': u'Delayed', u'id': 217110, u'label': u'Business A'}, {u'score': 0, 'Status1': u'Open', u'id': 217111, u'label': u'Business B'}, {u'score': 0, 'Status1': u'Closed', u'id': 217112, u'label': u'Business Yada Yada'}]

关于python - 字典: how to compare values and merge if values are the same?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891303/

相关文章:

python - 使用 Python 将 PDF 文件读取为文本

python - 优雅而高效的方式按原样保留日期值,而不会出现 OOB 错误

python - Django 1.10 删除大型级联查询集

python - 在 python 中,是否有一种简单的方法可以连接到不需要 root 访问权限的 mysql 数据库?

python - Shopify Python API 和纺织品库存

python - 将嵌套的 .h5 组读入 numpy 数组

python - 从三个一维数组创建一个 3D 坐标的 numpy 数组

python - 检查python类属性

python - 由于 msgpack 依赖性,Conda 构建失败(旧名称问题 - msgpack-python)

python - 不同等级的 Matmul