gpt4 book ai didi

python - 计算日期列表中每月错误 bool 值的数量?

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:12 24 4
gpt4 key购买 nike

我有一个如下所示的列表,其中包含几个月内每个日期的 bool 值。我想确定每个月 False bool 值的数量,最终目标是确定每个月的每月“False”百分比。例如,如果 11 月有 15 天为 False,我想显示 11 月的 50%。这在 Python 中如何完成?

list = [('2015-11-01', False), ('2015-11-02', True), ('2015-11-03', True), ('2015-11-04', True), ('2015-11-05', True)]

最佳答案

将数据存储在字典中,使用年份作为外键按年份分组,并计算每年出现 False 的次数:

from collections import defaultdict
d = defaultdict(lambda: defaultdict(float))

from calendar import monthrange, month_name
for k, v in lst:
year, mth, _ = k.split("-")
d[int(year)][int(mth)] += not v

for year, dct in d.items():
for mn, v in dct.items():
_, days = monthrange(year, mn)
print("Average for {}-{} is {}".format(year, month_name[mn], v / days))

获得计数后,您可以使用特定年份每月的正确天数来计算百分比。并非每年每个月的天数都相同,因此您不能使用通用日历来测试或忽略年份,日历模块会为我们处理天数。

创建一些随机数据:

from  random import choice

lst = [('2015-09-{}'.format(i), choice((True, False))) for i in range(1,31)] + [('2015-11-{}'.format(i), choice((True, False))) for i in range(1,31)]

输出:

Average for 2015-September is 0.533333333333
Average for 2015-November is 0.6

如果年份始终是当前年份,那么您可以简化字典的创建:

from collections import defaultdict
d = defaultdict(int)
for k, v in lst:
year, mth,_= k.split("-")
d[mth] += not v

print(d)

但请再次确保您正确比较了天数。

关于python - 计算日期列表中每月错误 bool 值的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33987797/

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