我有多个字典列表如下:
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},
...]
有没有一种简单的方法可以做到这一点?请帮忙。
尝试#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] 删除。
我来说两句