【问题标题】:Python Sorting a List of NamedtuplesPython对命名元组列表进行排序
【发布时间】:2015-01-28 11:59:48
【问题描述】:

我正在尝试按time 对其进行排序,但我不知道从哪里开始。

[
    A(id=u'BLI52E', time=datetime.datetime(2014, 11, 30, 9, 52, 49, 209102)),
    A(id=u'DHCS4J', time=datetime.datetime(2014, 11, 30, 9, 53, 36, 495319)),
    A(id=u'4HMS4J', time=datetime.datetime(2014, 11, 30, 9, 53, 16, 395329)),
    A(id=u'GFTS4J', time=datetime.datetime(2014, 11, 30, 9, 53, 36, 295319)),
    A(id=u'BH244K', time=datetime.datetime(2014, 11, 30, 9, 53, 23, 591319)),
]

【问题讨论】:

  • 对我来说它看起来像一个列表(A 对象)。不是吗?
  • 您需要更多信息。您要对哪些信息进行排序?然后将比较函数传递给 list.sort() 方法。我也同意 falsetru 这正是我想象的 A 列表的样子。
  • 感谢回复,我正在尝试按时间排序
  • 感谢 falsetru 和疯狂的刺猬引导我找到解决方案 :) stackoverflow.com/questions/5055812/…
  • 请在下面标出正确答案,如果您想反过来,您应该在问题中提及...无需编辑带有答案的问题..

标签: python


【解决方案1】:

当对列表中包含的命名元组的“键”进行排序时,您可以执行以下操作:

spam = [
            A(id=u'BLI52E', time=datetime.datetime(2014, 11, 30, 9, 52, 49, 209102)),
            A(id=u'DHCS4J', time=datetime.datetime(2014, 11, 30, 9, 53, 36, 495319))
       ]
spam.sort(key=lambda x:x.time)

摘自这里: Python: Tuples/dictionaries as keys, select, sort

【讨论】:

  • 感谢happyhamburger 花时间回答我的问题。我发现这是最好的解决方案list.sort(key=lambda r: r.time, reverse=True)
  • 呵呵,是的,我必须在那里改变我的答案;)
  • 你能不能去掉“常规元组排序”,因为这不是元组tuples use parentheses and lists use square brackets.
  • 公平点,我想我想展示的是对标准元组列表进行排序与​​对命名元组列表进行排序的区别。换句话说,使用传统的元组,您可以通过指定要排序的索引来对它们进行排序(因为它们没有键)。但是,由于您使用的是命名元组,因此处理方式略有不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
相关资源
最近更新 更多