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。谢谢!