【问题标题】:Sorting a list in python based on the last number in each string entry [closed]根据每个字符串条目中的最后一个数字对python中的列表进行排序[关闭]
【发布时间】:2018-02-02 09:34:46
【问题描述】:

我在 python 中有一个如下形式的列表:

myList = ['r0x94', 'r0x21', 'r0x51']

我想根据列表中每个字符串条目中的最后一个数字对其进行排序,这样:

sorted_myList = ['r0x21', 'r0x51', 'r0x94']

最后一个数字不是十六进制,而是十进制。怎么做?

【问题讨论】:

  • myList.sort()
  • 起始 0x 是十六进制值吗?
  • 不,结束值为十进制,而不是十六进制

标签: python regex string sorting numbers


【解决方案1】:
>>> my_list = ['r0x94', 'r0x21', 'r0x51']
>>> sorted(my_list, key=lambda x: int(x.rpartition('x')[-1]))
['r0x21', 'r0x51', 'r0x94']

【讨论】:

  • 嗯,我不认为这比sorted(my_list)...
  • 更好,用['r0x94', 'r0x21', 'r0x51', 'r0x100', 'r0x10']试试
  • @MartinEvans 试试['r0x1A']
  • @StefanPochmann 问题作者从未说过这是否是十六进制,他只是说字符串中的最后一个数字。所以我投票结束这个问题
  • 好吧,我会说0x 建议使用十六进制。但实际上这就是我对 Martin 的回应,我的观点是,如果我们假设 OP 的示例不具有代表性,那么我会在考虑更改大小之前先考虑十六进制。
猜你喜欢
  • 2021-03-15
  • 2015-09-11
  • 2021-09-26
  • 2019-12-15
  • 2016-02-02
  • 2018-06-08
  • 2012-07-03
  • 2021-03-20
  • 1970-01-01
相关资源
最近更新 更多