Q:怎么给一个乱序元组列表按时间排序?

maloneleo88 20天前 9

list = [('2021-03-18 21:30', '16863', '4032', '0', '3'),('2021-03-18 19:15', '42898', '9917', '2', '2'),('2021-03-16 21:30', '9918', '7239', '1', '0'),('2021-03-16 19:15', '9916', '16988', '1', '0'),('2021-03-09 21:30', '9924', '9914', '0', '1'),('2021-03-18 21:30', '16863', '4032', '0', '3')]

要转换日期时间成时间戳吗?还是有更简单的方法?主要列表里是元组,应该怎么写呢?
我想倒序,是按正序排完了再 reversed 吗?
最新回复 (13)
  • touchwithe 15天前
    引用 2
    list.sort(lambda item: datetime.datetime.strptime(item[0], ‘%Y-%m-%D %H:%M’), reverse=True)
    手机回复,没测试,应该是这样的。看一下 list.sort 的两个参数就知道了。
  • echowuhao 15天前
    引用 3
    不转换直接用 str 比较应该也是对的吧
  • infun 15天前
    引用 4
    ```python
    import time

    def take_first(elem):
    time_string = elem[0]
    return time_string

    input_list = [('2021-03-18 21:30', '16863', '4032', '0', '3'),('2021-03-18 19:15', '42898', '9917', '2', '2'),('2021-03-16 21:30', '9918', '7239', '1', '0'),('2021-03-16 19:15', '9916', '16988', '1', '0'),('2021-03-09 21:30', '9924', '9914', '0', '1'),('2021-03-18 21:30', '16863', '4032', '0', '3')]

    input_list.sort(key=take_first, reverse=True)

    print(input_list)
    ```
  • Gorgine 15天前
    引用 5
    list = [('2021-03-18 21:30', '16863', '4032', '0', '3'),('2021-03-18 19:15', '42898', '9917', '2', '2'),('2021-03-16 21:30', '9918', '7239', '1', '0'),('2021-03-16 19:15', '9916', '16988', '1', '0'),('2021-03-09 21:30', '9924', '9914', '0', '1'),('2021-03-18 21:30', '16863', '4032', '0', '3')]
    sorted_list = sorted(list, key=lambda x: x[0], reverse=True)
    print(sorted_list)
  • infun 15天前
    引用 6
    楼上这个更好
  • 楼主 maloneleo88 15天前
    引用 7
    @touchwithe
    @infun
    @echowuhao
    @infun
    谢谢啊 !!!

    @Gorgine 这么骚的操作是怎么做到的, 也没用 datatme 。 讲讲啊大神 lambda 不太懂,不就是匿名函数吗? 怎么就按时间排列了呢??
  • touchwithe 15天前
    引用 8
    @maloneleo88 字符串排序是逐个比较字符,所以正好和日期排序的结果一样
  • Gorgine 15天前
    引用 9
    对 时间比较没必要转成 datetime 或者时间戳 字符串也是可以比较的

    sorted 有个参数叫 key, 这个 key 可以传个函数进去,函数的参数默认就是这个 list 的 item,就是每个元祖,所以在这个匿名函数里面取 x[0],就取到来元祖的第一项,也就是那个时间字符串,然后 sorted 会根据 x[0]来给这个 list 排序
  • 楼主 maloneleo88 15天前
    引用 10
    @touchwithe
    @Gorgine

    666

    擦,不学了。 我这撅腚捅咕一个小时没捅咕出来。。

    老大们 接活吗?
  • Gorgine 15天前
    引用 11
    @maloneleo88 接咋了
  • 楼主 maloneleo88 15天前
    引用 12
    @Gorgine 好的 等有机会的
  • lululau 15天前
    引用 13
    sorted_list = sorted(list, key=operator.itemgetter(0), reverse=True)
  • lululau 15天前
    引用 14
    https://gist.github.com/lululau/c740a2a3915358ec5ed0c8d613687f19
  • 游客
    15
返回