我有两个长度相等的列表,一个带有日期 (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
