将字典列表与一个公共键组合在一起而不合并值

萨兰3h

我有多个字典列表如下:

data_aus =
[{'name': '2018,7', 'aus_ct': 13}, {'name': '2018,8', 'aus_ct': 3}, {'name': '2018,9', 'aus_ct': 3}]

data_asia = 
[{'name': '2018,7', 'asia_ct': 10}, {'name': '2018,8', 'asia_ct': 11}, {'name': '2018,9', 'asia_ct': 6}]

data_us =
[{'name': '2018,7', 'us_ct': 5}, {'name': '2018,8', 'us_ct': 8}, {'name': '2018,9', 'us_ct': 9}, {'name': '2018,10', 'us_ct': 23}]

data_uk =
[{'name': '2018,7', 'uk_ct': 15}, {'name': '2018,8', 'uk_ct': 7}, {'name': '2018,9', 'uk_ct': 13}]

我想根据一个名为name.

结果应如下所示:

data_combined = [
{'name': '2018,7', 'aus_ct': 13, 'asia_ct': 10, 'us_ct': 5, 'uk_ct':15},
{'name': '2018,8', 'aus_ct': 3, 'asia_ct': 11, 'us_ct': 8, 'uk_ct':7},
...]

有没有一种简单的方法可以做到这一点?请帮忙。

萨兰3h

尝试#2。

认为这应该有效:

import itertools
from collections import defaultdict

def merge_dicts(shared_key, *dicts):
    # Remove empty dicts (if any)
    dicts = list(filter(None, dicts))

    # Merging dicts based on shared keys
    result = defaultdict(dict)
    for dictionary in itertools.chain.from_iterable(dicts):
        result[dictionary[shared_key]].update(dictionary)

    # And converting results from {key1: dict1, key2: dict2, ...} to list of dicts [dict1, dict2, ...]
    return list(result.values())

并打电话...

merge_dicts('name', data_aus, data_asia, data_us, data_uk)

如果这种方法有任何问题,请告诉我。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

每个键将几乎相同的字典值列表组合在一起

将正确的值组合在一起

将嵌套对象中的值与公共属性组合在一起

Python将字典列表与等效字段组合在一起

如何将多个具有相同的键和列表作为值的地图组合在一起

.net core-将一个func列表与单个func组合在一起

将多个数组与 identica 键和不同的值组合在一起

如何将基于键的行与组合在单列中的值组合在一起

JSON.net将2个列表(JObject)组合在一起

Kotlin通过汇总每个元素将“ N”个列表组合在一起

如何将向量与列表中的公共成分组合在一起?

将SQL查询组合在一起

将数组元素组合在一起

将数据聚合/组合在一起

合并两个具有Employee不同属性的数组列表以创建一个新的数组列表,将两个数组列表的属性组合在一起

使用Object.assing将全局对象与另一个对象组合在一起,是否无法访问合并对象?

将列表与列表中不同长度的列表组合在一起

如何将两个具有相同键的数组组合在一起?

Lodash或将两个对象数组与匹配键组合在一起的最佳方法

如何将列与 Pandas 中的虚拟变量组合在一起(一个输出)?

将一个元素与不同列的所有其他元素组合在一起 / R

在MongoDB中将一个或多个$ match组合在一起

Groovy / Grails:如何将多个键组合在一起?

将多个对象数组与不同的键组合在一起

将列表中的元素组合在一起形成新列表

将 3 个大表与 2 个连接组合在一起

两个列表整数在python中组合在一起

在SELECT中将两个列表组合在一起

Jooq将OR条件列表与AND条件组合在一起