import os
from datetime import datetime, date
import datetime
test={datetime.date(1977, 6, 5): [81, 55, 0.0, False],
 datetime.date(2007, 11, 18): [45, 41, 0.02, True],
 datetime.date(2017, 11, 3): [43, 33, 0.3, True],
 datetime.date(2007, 2, 24): [44, 36, 0.36, True],
 datetime.date(2015, 2, 18): [54, 40, 0.0, False],
 datetime.date(2008, 11, 18): [51, 43, 0.01, True],
 datetime.date(1965, 12, 29): [43, 33, 0.27, True]}

sumtmax=0
year=[]
for k, v in test.items():
    year.append(k.year)
yearset=set(year)
print(yearset)

for i in yearset:
    for k, v in test.items():
        k=k.year
        if k==i:
            print(v[0])

我想得到每年[0]的平均值和[3]的总和。我该怎么做。。。

最佳答案

这将以不带外部库的dict形式给出结果:

sum3 = {}

for k, v in test.items():
    sum3[k.year] = sum3.get(k.year, 0) + v[3]

avg0 = {}

for k, v in test.items():
    value = avg0.get(k.year, (0, 0))
    avg0[k.year] = (value[0] + v[0], value[1] + 1.0)

avg0 = {k: v[0]/v[1] for k, v in avg0.items()}

sum3
#{2017: 1, 1965: 1, 2007: 2, 2008: 1, 1977: 0, 2015: 0}
avg0
#{2017: 43.0, 1965: 43.0, 2007: 44.5, 2008: 51.0, 1977: 81.0, 2015: 54.0}

10-07 19:41
查看更多