我有一个物品清单。 列表中的一个属性是m\u expiry,它存储为string。 我试图找到最短的日期差(现在和那个属性值之间),并得到列表的索引或对象本身。你知道吗
当前expiryValue返回的是日期差,而不是索引/对象。(我希望它返回idx=0或object[0]
expiryValue = min((datetime.strptime(item.m_expiry,'%Y%m%d') -datetime.now()) for item in object)
15天,10:12:00.077586
idx id x y z a m_expiry
[0] 215465490 ES ESH7 FUT GLOBEX 20170317
[1] 225652200 ES ESM7 FUT GLOBEX 20170616
[2] 236950077 ES ESU7 FUT GLOBEX 20170915
[3] 247950613 ES ESZ7 FUT GLOBEX 20171215
[4] 258973438 ES ESH8 FUT GLOBEX 20180316
你很接近。这里的技巧是最小化项目,键入它们的timedelta,而不是最小化timedelta本身。你知道吗
对这些项取最小值,并使用
key
关键字参数min
。你知道吗您将定义的键函数应该接受一个项并返回该项的timedelta。您还应该注意使timedelta成为绝对值,而您在示例代码中没有这样做。你知道吗
这将返回项目本身,它已经有了索引,您可以在
item.idx
访问该索引。你知道吗相关问题 更多 >
编程相关推荐