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):