gpt4 book ai didi

python - 在 Python 列表中将缺失的月份值插入为 0

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

我有一个 list :

t = [['01-2012', 3], 
['02-2012', 2],
['03-2012', 9],
['04-2012', 1],
['05-2012', 6],
['06-2012', 40],
['07-2012', 3],
['08-2012', 282],
['09-2012', 3],
['12-2012', 6],
['02-2013', 16],
['04-2013', 9]]

我需要将所有缺失的 [mm-yyyy, value] 元素添加到此列表中各自的位置作为 [mm-yyyy, 0],以便平滑所有缺失月份的时间序列。有什么猜测吗?

现在我正在做的是计算所有 0 值,如下所示:

total_items = [0]*12

for d in t:
month = int(d[0].split('-')[0], 10)
total_items[month-1] = d[1]

所以这给了我所有的值,包括缺失月份为 0 的值,但我不确定如何为它们生成相应的 mm-yyyy 元素。任何帮助,将不胜感激。谢谢。

最佳答案

我认为一个更简单的解决方案是迭代范围内的月份和年份,并添加缺少的内容。

<小时/>

如果您使用 dict 而不是两元素 listlist,这会更容易,所以让我们先这样做。

data = dict(t)
for year in range(2012, 2014):
for month in range(1, 13):
mmyyyy = '{:02}-{:04}'.format(month, year)
data.setdefault(mmyyyy, 0)
<小时/>

然后,如果您想将其转换回原始格式,也很简单:

t = [[k, v] for k, v in data.items()]
<小时/>

如果您需要按日期排序......好吧,您的月份优先格式使之变得丑陋,但这当然是可行的:

t = sorted(t, key=lambda kv: kv[0][3:] + kv[0][:2])

但是,正如最后一行所示,将日期作为日期对象而不是字符串来处理通常要容易得多。因此,您可能也需要考虑这一点。

<小时/>

但是,也许您最好保留 0 作为默认值,并通过循环数年和数月而不是循环遍历集合来处理它们,而不是插入 0?

关于python - 在 Python 列表中将缺失的月份值插入为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283984/

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