Example 1: merge a list of dictionaries python
>>> from collections import ChainMap
>>> a = [{'a':1},{'b':2},{'c':1},{'d':2}]
>>> dict(ChainMap(*a))
{'b': 2, 'c': 1, 'a': 1, 'd': 2}
Example 2: how to merge a list of dictionaries in python
from collections import defaultdict
dict_list = {
1: [{
"x": "test_1",
"y": 1
},
{
"x": "test_2",
"y": 1
}, {
"x": "test_1",
"y": 2
}
],
}
print(dict_list) # {1: [{'x': 'test_1', 'y': 1}, {'x': 'test_2', 'y': 1}, {'x': 'test_1', 'y': 2}]}
data = dict()
for key, value in dict_list.items():
tmp = defaultdict(int)
for index, item in enumerate(value):
tmp[item.get("x") ] += item.get("y")
for tmp_key, tmp_value in tmp.items():
data.setdefault(key, []).append(
{
"x": tmp_key,
"y": tmp_value
}
)
print(data) # {1: [{'x': 'test_1', 'y': 3}, {'x': 'test_2', 'y': 1}]}
# test 1 values is added together
Example 3: merged all dictionaries in a list python
>>> result = {}
>>> for d in L:
... result.update(d)
...
>>> result
{'a':1,'c':1,'b':2,'d':2}
Example 4: merge two list of dictionaries python with string
import pandas as pd
l1 = [{'id': 9, 'av': 4}, {'id': 10, 'av': 0}, {'id': 8, 'av': 0}]
l2 = [{'id': 9, 'nv': 45}, {'id': 10, 'nv': 0}, {'id': 8, 'nv': 30}]
df1 = pd.DataFrame(l1).set_index('id')
df2 = pd.DataFrame(l2).set_index('id')
df = df1.merge(df2, left_index=True, right_index=True)
df.T.to_dict()
# {9: {'av': 4, 'nv': 45}, 10: {'av': 0, 'nv': 0}, 8: {'av': 0, 'nv': 30}}