Python实现博客按月份归档,并在页面上自动隐去没有创作博客的月份

需求描述:

我想实现每位博主的博客按月份归档,只要是写了博客的月份,就要在页面上显示出年月以及博客数量。没有写博客的月份,就不需要显示了。最终的效果如下:

2019年7月(1篇)

2019年5月(3篇)

上面的例子说明,该博主是从2019年5月开始写博客的,6月没写,7月写了1篇。

代码实现:

#假设下面的列表就是某位博主创作的全部博客,18年12月写了他的第一篇博客,19年2月写了两篇,19年7月写了1篇
#博客信息是按照时间递增排列的(在我的项目中,数据库里维护了“添加时间”字段,所以很容易按时间递增排序)
#最终想呈现在页面上的就是2018-12(1),2019-2(2),2019-7(1)
blog_list=[{'title':'画眉毛的正确方法','year':2018,'month':12},{'title':'怎么做好吃的糖醋排骨','year':2019,'month':2},{'title':'如何练字','year':2019,'month':2},{'title':'学好Python的秘诀','year':2019,'month':7}]
#年份的起点是第一篇博客的年份
year=blog_list[0]['year']
#月份的起点是第一篇博客的月份
month=blog_list[0]['month']
#这个空列表用于存放我们的最终数据
time_list=[]
#count用来计数,它记录的是当前查看的月份有多少篇博客
count=0

#遍历所有博客
for blog in blog_list:
    #如果这篇博客的年月正好等于当前查看的年月,就给这个月的博客数量加1
    if blog['year']==year and blog['month']==month:
        count+=1
    #当某篇博客的年月和当前查看的年月不一致,说明新的月份开始了,
    # 这时我们要把刚才查看的年月和对应的博客数量追加到列表里
    #并且把count的值设为1,因为这意味着新的月份已经有一篇博客了
    #同时也要更新年月的数值
    else:
        time_list.append([year,month,count])
        count=1
        year=blog['year']
        month=blog['month']
#因为最后一篇博客的后面不存在跟它的年月不一致的博客了,所以这里要单独追加最后一个月的信息
time_list.append([year,month,count])
#要让最近的日期在最前面,所以这里要反转列表
time_list.reverse()

for time in time_list:
    print(time)

 终端:

[2019, 7, 1]
[2019, 2, 2]
[2018, 12, 1]

 

如果这篇博文帮到了你,就请给我点个吧(#^.^#)

有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值