gpt4 book ai didi

python - 优化python中两个字典列表的合并

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:15 26 4
gpt4 key购买 nike

我有两个列表,每个列表包含 10-15k 个字典。第一个列表名为 campaigns,它包含具有以下结构的字典:

{u'campaign_id': u'400037', u'ctr': u'1.1210', u'roi': 0, u'end_date': None, u'revenue': 0.0, u'website_id': 1, u'enabled': u'active', u'budget': u'100.00', u'default_bid': u'0.05', u'cost': 30.63, u'start_date': u'2018-02-13'}

第二个列表 - yesterday_data 字典的结构是:

{u'cost': 0.0, u'campaign_id': u'400037', u'revenue': 0.0}

目标是匹配广告系列 ID,并将两个键添加到 campaigns_data 中的相关字典,其中 yesterday_date["revenue"]yesterday_date["cost"] 将是 campaigns_data 字典中的新键 - yesterday_costyesterday_revenue

我设法用以下代码实现了这个逻辑:

campaigns = model.get_campaigns_data(self.mysql_db)
yesterday_data = model.get_yesterday_data(self.mysql_db, yesterday)
try:
for campaign in campaigns:
missing = filter(lambda c: c["campaign_id"] == str(campaign["campaign_id"]), yesterday_data)
if not missing:
pass
else:
campaign["yesterday_spend"] = missing[0]["cost"]
campaign["yesterday_revenue"] = missing[0]["revenue"]

但是每个列表中都有这么多的字典,它的速度非常慢,而且我想相信,这远不是实现这一目标的优化方法。知道如何改进我的代码以获得相同的结果吗?

最佳答案

id分组并减少:

grouper = {}
for d in campaigns_data:
grouper[d["campaign_id"]] = d

# assuming the keys match up:

for d in yesterday_data:
grouper[["campaign_id"]].update(yesterday_spend=d['cost'],
yesterday_revenue=d['revenue'])

关于python - 优化python中两个字典列表的合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48781933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com