如何解决如何将字典值求和成元组列表?
考虑以下功能:
我需要在输入的年份范围内确定每年的总和。
例如sumarry_statistics(data,2015,2020)
我需要在年份范围内具有col[9]
的元组列表中为每个元组找到[0]
的总和。
所以我有很多东西,可以用来创建我的第一个元组列表,该列表每年都计数,以及该年发生了多少次时间:
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())
打印输出(地震计数_年):
[(2015,48),(2016,52),(2017,64),(2018,65),(2019,60),(2020,24)]
我需要写一些类似的东西,但是除了计算出现次数之外,我还需要查找每年作为输入的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())
最后一行对我来说尤其成问题。这是行不通的。我认为我什至无法非常清楚地描述我在这里需要做的事情。 tuple[0]
是带有年份列表的csv列。 tuple[9]
是代表死亡人数的整数列表。我需要查找每年输入的死亡人数,并以相同的方式存储元组列表,例如:
[(year,sum of [9]),(year2,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
然后您遍历包含特定年份tuple[0]
和代表死亡人数tuple[9]
的数字的数据,因此对于for循环的每次迭代,如果您的条件得到遵守,如果键代表要分配数据的字典不存在,请添加字典并分配相应的数据,即dmgs
,否则将数据添加到其中
请注意在data
中迭代所用的变量名:
for index,tuple in enumerate(data):
tuple
是元组对象的python内置函数,因此,当您使用该名称创建该变量时,将覆盖具有相同名称的tuple
python内置函数
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。