如果密钥适合一定的间隔,我如何在python中打印出字典的值?

时间:2014-07-23 19:11:55

标签: python if-statement dictionary

我试图根据字符串值是否在特定日期的间隔内打印出字符串值。例如:

fileDict = {"2006-01-01":"A", "2006-01-02":"B", "2006-01-03":"C", "2006-01-04":"D", "2006-01-05":"E"}

startTime = "2006-01-01" #January 1, 2006
endTime = "2006-01-05" #January 5, 2006

if fileDict.keys >= startTime and fileDict.keys <= endTime:
    print fileDict.values()

所以在这种情况下,每个值都应打印出来。

3 个答案:

答案 0 :(得分:1)

fileDict = {"2006-01-01":"A", "2006-01-02":"B", "2006-01-03":"C", "2006-01-04":"D", "2006-01-05":"E"}
startTime = "2006-01-01" #January 1, 2006
endTime = "2006-01-05" #January 5, 2006
[fileDict[i] for i in fileDict if i >= startTime and i <= endTime]

输出

['C', 'B', 'A', 'E', 'D']

请注意,我不是这方面的忠实粉丝,它只能起作用,因为你的字符串碰巧被格式化为年 - 月 - 日。您应该将这些对象转换为datetime对象,这样您就可以正确地进行小于和大于比较 编辑:@PadraicCunningham使用这种方法,我正在推动他的解决方案,该方法更加健壮。

答案 1 :(得分:1)

使用datetime.strptime转换然后比较:

 import datetime
fileDict = {"2006-01-01":"A", "2006-01-02":"B", "2006-01-03":"C", "2006-01-04":"D", "2006-01-05":"E","2006-01-06":"F"}

startTime = datetime.datetime.strptime("2006-01-01","%Y-%m-%d") 
endTime =  datetime.datetime.strptime("2006-01-05","%Y-%m-%d")

for k in fileDict:
    dat = datetime.datetime.strptime(k,"%Y-%m-%d")
    if startTime <= dat <= endTime:
        print fileDict[k]
C
B
A
E
D

我根据您想要包含上限和下限的假设使用<=

答案 2 :(得分:0)

这应该使用Python datetime模块完成。

在能够使用运算符之前,您需要将字符串日期解析为datetime对象。

您可以使用datetime.strptime(date_string,format)方法从字符串创建日期时间对象实例。

请参阅:https://docs.python.org/2/library/datetime.html