【问题标题】:Enumerate through list of object and return index or object枚举对象列表并返回索引或对象
【发布时间】:2017-03-01 19:04:27
【问题描述】:

我有一个对象列表。 列表中的属性之一是存储为字符串的 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

【问题讨论】:

  • 你能改进你的问题吗?更好地阐述它;-)

标签: python enumerate


【解决方案1】:

你很接近。这里的技巧是最小化项目,关闭它们的时间增量,而不是最小化时间增量本身。

对项目取最小值,并使用minkey 关键字参数。

min(items, key=...)

您将定义的键函数应该接受一个项目并返回该项目的时间增量。您还应该注意确定 timedelta 的绝对值,您在示例代码中没有这样做。

这将返回项目本身,该项目本身已包含您可以通过item.idx 访问的索引。

【讨论】:

  • 非常感谢!包括:from operator import attrgetter
猜你喜欢
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 2022-12-05
  • 2020-04-18
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多