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

Python 如何按列表中基于int的字符串对列表进行排序?,python,algorithm,list,sorting,Python,Algorithm,List,Sorting,我最近在一些代码方面遇到了一些问题,我想我应该和这个了不起的社区分享一下 我有一个字符串列表,也是基于字符串的列表,由一个特殊字符(“~”分隔)。例如 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等)对列表

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

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

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
时,它不会输出正确的顺序。

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

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)
这将涉及每一个要素:

  • 将其围绕
    ~
    拆分,使
    '0~A~Sometext'
    变成
    ['0','A','Sometext']
  • 从列表中选取第一个元素
  • 将其设为整数
  • 并比较所有这些整数对列表进行排序

    输出:

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

    您可以定义自己的排序键,并在排序方法中指定它

    e、 g

    def sort_键(输入):
    返回int(input.split(“~”)[0])
    列表1.sort(key=sort\u key)
    
    非常感谢,我相信我是在比较int的字符串实现,而不是实际的int。谢谢!