Skip to main content
 首页 » 编程设计

python之从 2 个列表中获取每个日期的总和

2025年05月04日22duanxz

我有两个长度相等的列表,一个带有日期 (YYYY-MM-DD),其中有些重复,另一个带有 float (正数和负数)。我如何获得一个字典对象,其中包含与每个唯一日期(已排序)相对应的 float 总和,格式如下:

result_dict = {unique_date_1: float_sum_1, unique_date_2: float_sum_2, etc...} 

我的 list :

dates = [2013-06-22, 2009-07-09, 2016-07-09, 2009-07-09] 
floats = [0.0, 0.8, -0.4, 0.1] 

我希望得到的:

{2009-07-09: 0.9, 2013-06-22: 0.0, 2016-07-09: -0.4} 

到目前为止我尝试了什么:

unique_dates = set(dates) 
sum_list = [sum(number) for number in floats] 

请您参考如下方法:

您需要使用带有float 的defaultdict 作为默认工厂。然后 zip 列表并迭代键和值,同时使用适当的键对值求和。

from collections import defaultdict 
 
dates = ['2013-06-22', '2009-07-09', '2016-07-09', '2009-07-09'] 
floats = [0.0, 0.8, -0.4, 0.1] 
 
sum_dic = defaultdict(float) 
 
for date, value in zip(dates, floats): 
    sum_dic[date] += value 

输出

defaultdict(<class 'float'>, {'2013-06-22': 0.0, '2009-07-09': 0.9, '2016-07-09': -0.4}) 

您也可以像这样不导入 defaultdict 来做到这一点:

sum_dic = {} 
for date, value in zip(dates, floats): 
    sum_dic[date] = sum_dic.get(date, 0.0) + value