我有一个清单:
timestamp_list = ['1377091800', '1377093000', '1377094500', '1377095500']
目标编号:
ptime = 1377091810
我想找到哪对时间戳确实ptime
位于其中。例如,在这种情况下,它位于第一个和第二个时间戳之间。所以我想将该值1377091800
作为所需的输出返回。同样,如果ptime
是1377091520
,那么我希望返回第三个时间戳,即1377091500
因为它位于第三个和第四个时间戳之间。
我的代码:
timestamp_list = ['1377091800', '1377093000', '1377094500', '1377095500']
ptime = 1377091810
for idx, value in enumerate(timestamp_list):
val = long(value)
if idx!= len(timestamp_list)-1 and ptime >= val and ptime < long(timestamp_list[idx+1]):
target = val
break
elif (idx == len(timestamp_list)-1) and ptime >= val:
target = val
else:
pass
print target
输出:
1377091800
我想知道有什么优雅的解决方案吗?由于我刚开始接触python,所以对python中的所有功能还不是很熟悉。
任何帮助表示赞赏。
编辑:
使用的解决方案:
import bisect
timestamp_list = ['1377091800', '1377093000', '1377094500', '1377095500']
ptime = str(1377093110)
if ptime in timestamp_list:
target = ptime
else:
index = bisect.bisect_right(timestamp_list, ptime)-1
target = timestamp_list[index]
print target
输出:
1377093000