我试图根据字符串值是否在特定日期的间隔内打印出字符串值。例如:
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()
所以在这种情况下,每个值都应打印出来。
答案 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)方法从字符串创建日期时间对象实例。