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

时间:2017-03-01 19:04:28

标签: python enumerate

我有一个对象列表。 列表中的一个属性是m_expiry,它存储为字符串。 我试图找到最短的日期差异(在现在和那个属性值之间)并获得列表的索引或对象本身。

目前 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

1 个答案:

答案 0 :(得分:1)

你很亲密。这里的诀窍是最小化项目,键入他们的timedelta ,而不是最小化timedeltas本身。

对这些项目采取最低限度,并使用key的{​​{1}}关键字参数。

min

您将定义的键功能应接受一个项目并返回该项目的timedelta。您还应该注意使用timedelta的绝对值,这是您在示例代码中没有做到的。

这将返回项目本身,该项目已经包含您可以在min(items, key=...) 访问的索引。