我需要对此列表进行排序
list = ['16. Michlík', '4. and 65. Bichakhchyan', '15. Pavol']
根据每个字符串的第一个数字。所以输出应该是这样的
list = ['4. and 65. Bichakhchyan', '15. Pavol', '16. Michlík']
这是我到目前为止所做的,但是当字符串
中有多个数字时它不起作用sorted(list, key=lambda x : x[:x.find(".")])
你能帮我吗?
答案 0 :(得分:3)
您必须将模式转换为整数,否则将其作为字符串进行比较。
sorted(list, key=lambda x : int(x[:x.find(".")]))
答案 1 :(得分:1)
您可以使用正则表达式:
import re
l = ['16. Michlík', '4. and 65. Bichakhchyan', '15. Pavol']
result = sorted(l, key=lambda x:int(re.findall('^\d+', x)[0]))
输出:
['4. and 65. Bichakhchyan', '15. Pavol', '16. Michlík']
答案 2 :(得分:1)
这是一种方式。
lst = ['16. Michlík', '4. and 65. Bichakhchyan', '15. Pavol']
res = sorted(lst, key=lambda x: int(x.split('.')[0]))
# ['4. and 65. Bichakhchyan', '15. Pavol', '16. Michlík']