python 如何在一个字典中截取其中的一段

如{1984/1/1:123,1984/1/2:145……1985/1/1:156……}在这个字典中选取日期为6月1日到10月1日之间的部分数据... 如{1984/1/1:123,1984/1/2:145……1985/1/1:156……}在这个字典中选取日期为6月1日到10月1日之间的部分数据 展开
 我来答
H_L_D_V
2016-06-17 · TA获得超过173个赞
知道答主
回答量:34
采纳率:100%
帮助的人:41.6万
展开全部


# 文字版:

# -*- coding: utf-8 -*-


# 辅助函数:把月和日转化成小数格式,方便比较。比如六月三日就转化成6.3

def md2f(m,d):

    return (m) + (d)*0.1


# 这个函数用来截取需要的时间段

def getDateRange(dates,startMonth,startDate,endMonth,endDate):

    

    rangedDates = {}         #先定义一个空字典,过会把符合要求的值都添进去

    for k in dates.keys():        #用一个loop,把原本字典里所有的内容都检查一遍

        y = int(k.split("/")[0])  #从“年/月/日“的格式里面提取出y=年、m=月、d=日

        m = int(k.split("/")[1])  

        d = int(k.split("/")[2])

        

        # 进行比较,如果月、日符合所给定的时间段,那就把这一项添到新字典里去

        if md2f(startMonth,startDate) < md2f(m,d) < md2f(endMonth,endDate):

            rangedDates[k] = dates[k]

            

    return rangedDates       # 返回新字典,这里面就是所有符合时间段的日期了。

    

    

sampleDates = {"1984/2/10":1,"1984/5/15":9,"1984/6/16":3,"1984/9/12":6,"1984/11/12":8,"1985/8/1":7}

print getDateRange(sampleDates,6,1,10,1)    #调用函数,找到六月一号到十月一号之间的日期

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式