給定python中的a_list和b_list,我想合并它們,結果是c_list。
在下面的示例中,只想合并與“code”鍵匹配的“A”的元素。
a_list = [{'code': 'A', 'foo_sum': 1}, {'code': 'B', 'foo_sum': 2}]
b_list = [{'code': 'A', 'bar_sum': 3}]
c_list = [{'code': 'A', 'foo_sum': 1, 'bar_sum': 3}, {'code': 'B', 'foo_sum': 2}]
我想用numpy,但不能用,因為它不一定匹配元素長度和順序。
而且,我試圖在迭代程序中確定這一點,但由于區域變數在理解符號中不可用,因此無法使其成為 c。
for a in b_list:
if any(b["code"] == a["code"] for i, b in enumerate(b_list):
# want to use i variable, but not dified.
a["bar_sum"] = b_list[i]["code"]
uj5u.com熱心網友回復:
另一種解決方案:
a_list = [{"code": "A", "foo_sum": 1}, {"code": "B", "foo_sum": 2}]
b_list = [{"code": "A", "bar_sum": 3}]
out = {}
for d in a_list b_list:
out[d["code"]] = {**out.get(d["code"], {}), **d}
print(list(out.values()))
印刷:
[{"code": "A", "foo_sum": 1, "bar_sum": 3}, {"code": "B", "foo_sum": 2}]
uj5u.com熱心網友回復:
你可以試試
- 合并兩個串列
code按key 然后 groupby對合并的串列進行排序code- 將組中的字典串列合并到一個字典中
from itertools import groupby
from collections import ChainMap
c_list = a_list b_list
c_list = sorted(c_list, key=lambda d: d.get('code'))
res = [dict(ChainMap(*group)) for key, group in groupby(c_list, lambda d: d.get('code'))]
print(res)
[{'code': 'A', 'bar_sum': 3, 'foo_sum': 1}, {'code': 'B', 'foo_sum': 2}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475777.html
上一篇:在所有實體中獲取屬性的字典
