枚举对象列表并返回索引或对象

2024-04-26 07:14:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个物品清单。 列表中的一个属性是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

Tags: 对象列表datetimestring属性objectesmin
1条回答
网友
1楼 · 发布于 2024-04-26 07:14:10

你很接近。这里的技巧是最小化项目,键入它们的timedelta,而不是最小化timedelta本身。你知道吗

对这些项取最小值,并使用key关键字参数min。你知道吗

min(items, key=...)

您将定义的键函数应该接受一个项并返回该项的timedelta。您还应该注意使timedelta成为绝对值,而您在示例代码中没有这样做。你知道吗

这将返回项目本身,它已经有了索引,您可以在item.idx访问该索引。你知道吗

相关问题 更多 >