【问题标题】:How to sort Array of string in specific string index如何对特定字符串索引中的字符串数组进行排序
【发布时间】:2020-06-13 05:24:27
【问题描述】:

所以.. 实际上,我有一个包含多个字符串的列表。在这里我想在特定的字符串索引中对其进行排序:

lists = ['AELIA4560005253120', 'KIFLA5000005760000']

Soo.. 在列表中,有名称(其中包含大写字母)、代码(名称后的 3 位数字)和密码(前一个代码后的 10 位代码).. 我的问题是,我可以按我想按代码排序(名称后3位数字)的特定字符串索引对这个列表进行排序吗??

# expecting lists after sort
lists_sort = ['KIFLA5000005760000','AELIA4560005253120']

所以我的预期结果是,KIFLA 第一,AELIA 第二是因为 KIFLA 的代码是 500 而 AELIA 的代码是 456

谁能帮帮我?谢谢????

【问题讨论】:

  • 名字总是一样长吗?
  • 不.. 只有密码的长度相同,即最后一个密码的 10 位。
  • 因此,如果名称不完全是五个字母,那么您接受的答案将会中断。
  • 是的,但是多亏了答案,我可以通过反转索引本身来更改索引,从而使代码变成这样。 res = sorted(lists, key=lambda x: int (x[-13:-10]), 反向 = True)

标签: python arrays string list


【解决方案1】:

试试这个:

lists = ['AELIA4560005253120', 'KIFLA5000005760000']

res = sorted(lists, key=lambda x: int(x[5:8]) , reverse = True)
#['KIFLA5000005760000', 'AELIA4560005253120']

【讨论】:

  • 您可能希望在 lambda 函数中使用 int(x[5:8])。
【解决方案2】:

假设名称是可变长度的,您可以这样使用:

import re

lists = ['AELIA4560005253120', 'KIFLA5000005760000']

lists_sort = sorted(lists, key = lambda x: int(re.search(r'\d{3}', x).group(0)), reverse = True)
print(lists_sort)

【讨论】:

  • 不知道int(re.search(r'\d{3}', s).group(0))会不会更方便?
  • 是的,谢谢你的建议。我已经更新了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 2014-10-28
相关资源
最近更新 更多