gpt4 book ai didi

python - 根据旧字典创建一本新字典,按十年对关键年份进行分组并找出范围的平均值

转载 作者:行者123 更新时间:2023-12-01 00:25:25 35 4
gpt4 key购买 nike

我想从旧词典创建一本新词典。我想按几十年对键进行分组,并找到每个新键的平均值。

d={1850:1,1851:2,1853:3,1854:2,1860:5,1861:6,1862:0,1865:1}
av=0
i=0
new_dict={}
a=1850
total=0
for key, value in d.items():
if key in range(a,a+10):
total=total+value
i=i+1
av=total/i
new_key=(a,a+10)
new_dict[new_key]=av
a=a+10
if a>1870:
break

print(new_dict)

我希望我的结果采用以下形式:

new_dict={(1850,1860):2,(1860,1865):3}

我希望最后一个组/ key 到达去年并关闭该组。

但首先我很难分配这些值的平均值。我的结果是:

{(1850, 1860): 1.0, (1860, 1870): 1.0, (1870, 1880): 1.0}

最佳答案

您可以使用 defaultdict按十年对计数进行分组,同时跟踪最大年份值。然后,计算每个十年的平均值,必要时使用最后一年。

请注意,没有相应的第一年调整,这不在您的规范中,但如果需要,可以按照与去年相同的策略轻松添加(找到全局最小年份,然后使用全局最小年份的最大值)并将当前年份作为每个元组范围中的第一项)。

from collections import defaultdict

d = {1850: 1, 1851: 2, 1853: 3, 1854: 2, 1860: 5, 1861: 6, 1862: 0, 1865: 1}
group_size = 10
by_decade = defaultdict(list)
last_year = 0

for year, count in d.items():
by_decade[year//group_size*group_size].append(count)
last_year = max(last_year, year)

avg_by_decade = {
(year, min(last_year, year + group_size)): sum(counts) / len(counts)
for year, counts in by_decade.items()
}

print(avg_by_decade) # => {(1850, 1860): 2.0, (1860, 1865): 3.0}

关于python - 根据旧字典创建一本新字典,按十年对关键年份进行分组并找出范围的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615163/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com