如何按列表中基于int的字符串对列表进行排序?

2024-06-28 20:56:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近在一些代码方面遇到了一些问题,我想我应该和这个了不起的社区分享一下!你知道吗

我有一个字符串列表,也是基于字符串的列表,由一个特殊字符(“~”分隔)。例如。。你知道吗

list1 = [
'0~A~Sometext',
'56~B~Sometext',
'3~A~Sometext',
'875~G~Sometext',
'54~V~Sometext',
'3~D~Sometext',
'20~S~Sometext',
'7~R~Sometext'
]

我想根据字符串中的第一个元素(0、56、3875等)对列表进行排序

当我尝试实现自己的排序算法或使用Python的sort时,它不会输出正确的顺序。你知道吗


Tags: 字符串代码算法元素列表排序顺序sort
2条回答

您可以定义自己的排序键并在排序方法中指定它。你知道吗

例如

def sort_key(input):
    return int(input.split('~')[0])

list1.sort(key=sort_key)

通过将自定义函数作为sort()方法的key参数传递,可以使用自定义函数进行排序:

list1 = [
    '0~A~Sometext',
    '56~B~Sometext',
    '3~A~Sometext',
    '875~G~Sometext',
    '54~V~Sometext',
    '3~D~Sometext',
    '20~S~Sometext',
    '7~R~Sometext'
]
list1.sort(key=lambda x: int(x.split('~')[0]))
print(list1)

这将包含每个元素:

  1. 将其围绕~拆分,使'0~A~Sometext'变成['0', 'A', 'Sometext']
  2. 从列表中选取第一个元素
  3. 使其成为整数。你知道吗

并比较所有这些整数对列表进行排序。你知道吗

Output:

['0~A~Sometext', '3~A~Sometext', '3~D~Sometext', '7~R~Sometext', '20~S~Sometext', '54~V~Sometext', '56~B~Sometext', '875~G~Sometext']

相关问题 更多 >