我有以下 list :
list1 = ['# Heading', '200: Stop Engine', '', '20: Start Engine', '400: Do xy']
我想得到:
list2 = ['20: Start Engine', '200: Stop Engine', '400: Do xy']
所以空列表项和以#开头的项应该被删除或忽略,其余的应该按数字排序。我尝试使用 split()
来提取数字和 #:
list2 = [i.split() for i in list1]
但是我在列表中得到一个列表会带来一些其他问题(我需要将列表的内容转换为 int
进行排序,只有在我有 string 时才有效
)。输出将是:
list2 = ['#', 'Heading', '200:', 'Stop', 'Engine', '', '20:', 'Start', 'Engine', '400:', 'Do', 'xy']
如果我split(':')
,我不能删除#。
对于我尝试的排序:
list2.sort(key = lambda x: x[0])
按数字对项目进行排序。这仅在我可以删除 # 和空项并将 string
转换为 int
时才有效。我希望有一个人可以帮助我!提前致谢!
最佳答案
首先,您可以使用列表推导从列表中过滤掉不需要的项目,然后对其进行排序:
list1 = ["# Heading", "200: Stop Engine", "", "20: Start Engine", "400: Do xy"]
out = sorted(
[s for s in list1 if s.split(":")[0].isdigit()],
key=lambda s: int(s.split(":")[0]),
)
print(out)
打印:
['20: Start Engine', '200: Stop Engine', '400: Do xy']
关于python - 如何在python中拆分和排序列表的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73514027/