具有以下词典列表,其中包括时间戳记(以字符串值形式)和一个值:
my_example = [{'timestamp': '2009-11-10T23:00:01Z', 'value': 1}, {'timestamp': '2009-11-10T23:00:05Z', 'value': 2}, {'timestamp': '2009-11-10T23:00:20Z', 'value': 3}]
我想要一个给定的时间戳值(字符串格式),找到最接近的值。
这意味着:
2009-11-10T23:00:02Z
,我想返回:{'timestamp': '2009-11-10T23:00:01Z', 'value': 1}
2009-11-10T23:00:04Z
,我想返回:{'timestamp': '2009-11-10T23:00:05Z', 'value': 2}
2009-11-10T23:00:15Z
,我想返回:{'timestamp': '2009-11-10T23:00:15Z', 'value': 3}
等有人可以帮我吗?
例如,我知道有一个内置函数可以使整数列表变魔术,但是我不知道如何使它与日期一起使用:
min(myList, key=lambda x:abs(x-myNumber))
。
预先感谢
答案 0 :(得分:2)
使用datetime
将字符串转换为日期时间对象,并使用min
例如:
import datetime
my_example = [{'timestamp': '2009-11-10T23:00:01Z', 'value': 1}, {'timestamp': '2009-11-10T23:00:05Z', 'value': 2}, {'timestamp': '2009-11-10T23:00:20Z', 'value': 3}]
myNumber = "2009-11-10T23:00:02Z"
myNumber = datetime.datetime.strptime(myNumber, "%Y-%m-%dT%H:%M:%SZ")
print(min(my_example, key=lambda x:abs(datetime.datetime.strptime(x["timestamp"], "%Y-%m-%dT%H:%M:%SZ") - myNumber)))