Python 如何将dict值相加到元组列表中?

Python 如何将dict值相加到元组列表中?,python,python-3.x,list,list-comprehension,Python,Python 3.x,List,List Comprehension,考虑以下功能: 我需要在作为输入的年份范围内确定每年的金额 例如,sumarry_统计数据(数据,2015年、2020年) 我需要在一个包含[0]的元组列表中找到每个元组的列[9]的总和 所以我有这么多,用来创建我的第一个元组列表,每年计数,以及那一年发生了多少次: def summary_statistics(data, year_start, year_end): earthquake_count_by_year = [] total_damages_by_year = []

考虑以下功能:

我需要在作为输入的年份范围内确定每年的金额

例如,
sumarry_统计数据(数据,2015年、2020年)

我需要在一个包含
[0]
的元组列表中找到每个元组的
列[9]
的总和

所以我有这么多,用来创建我的第一个元组列表,每年计数,以及那一年发生了多少次:

def summary_statistics(data, year_start, year_end):
    earthquake_count_by_year = []
    total_damages_by_year = []
    casualties_by_year = []
    year_count = {}
    dmg_sum = {}
    
    years = []
    year_start = int(year_start)
    year_end = int(year_end)
    
    if year_end >= year_start:
        
        #store year range into list
        years = list(range(year_start, year_end+1))
        
        for index, tuple in enumerate(data):
            #values to be summed for each year in dmg_sum
            yr = tuple[0]
            dmgs = tuple[9]
            
            #if year in range of years (year_start - year_end)
            if tuple[0] in years:
                #if year does not exist in dict, set it to 0
                if tuple[0] not in year_count:
                    year_count[tuple[0]] = 0
                #count number of occurences for each year
                year_count[tuple[0]] += 1
       earthquake_count_by_year = list(year_count.items())
打印输出(地震计数按年份):

我需要写一些类似的东西,但是我需要找到作为输入的每年的
col[9]
的总和,而不是计算发生的次数

我不知道接下来该怎么办:

for index, tuple in enumerate(data):
    #values to be summed for each year in dmg_sum
    yr = tuple[0]
    dmgs = tuple[9]
    
    #if year in range of years (year_start - year_end)
    if tuple[0] in years:
        #if year does not exist in dict, set it to 0
        if tuple[0] not in year_count:
            year_count[tuple[0]] = 0
        #count number of occurences for each year
        year_count[tuple[0]] += 1
        
        if tuple[0] not in dmg_sum:
            dmg_sum[tuple[0]] += sum(dmg_sum.values())
最后一句话对我来说特别有问题。它不起作用。我甚至不能很清楚地描述我在这里需要做什么<代码>元组[0]是一个csv列,包含年份列表<代码>元组[9]是表示死亡人数的整数列表。我需要找到每年的死亡人数作为输入,并以相同的方式存储,元组列表如下:

[(year, sum of [9]), (year2, sum of [9]), etc. 
你能行

if tuple[0] not in dmg_sum:
    dmg_sum[tuple[0]] = dmgs
else:
    dmg_sum[tuple[0]] += dmgs
编辑:添加更多关于答案和上下文的信息 在以下情况下,无法向尚未赋值的变量添加值:

if tuple[0] not in dmg_sum:
        dmg_sum[tuple[0]] += dmgs
您迭代包含特定年份
元组[0]
和表示死亡人数的数字
元组[9]
的数据,因此对于for循环的每次迭代,如果您的条件得到尊重,如果表示要分配数据的字典的键不存在,则添加该键并分配相应的数据,即
dmgs
,否则将该数据添加到该字典中

在下列情况下,请注意迭代
数据时使用的变量名:

for index, tuple in enumerate(data):

tuple
是tuple对象的python内置函数,因此当您使用该名称创建该变量时,您会覆盖同名的
tuple
python内置函数

tuple[0]是年份列表还是特定年份?据我所知,它是特定年份,因此您的代码无法工作。无论如何,你不能给不存在于
dmg\u sum[tuple[0]+=sum(dmg\u sum.values())
Ah ok中的东西添加值,所以我不知道它在做什么。提供完整的代码,这样我们就可以自己测试它,提供一个最小的可重复的示例。实际上,tuple[0]是一个特定的年份。。。但它只是在几年的时间里反复出现。。。。所以你下面的解决方案确实奏效了。啊,好吧,很高兴它奏效了,下次在展示代码时尽量有点条理化,并提供一个可重复性最低的示例
for index, tuple in enumerate(data):