2024-09-21 01:20:06 发布
网友
微软Word有这种默认的非逻辑的方法,我相信它已经在许多其他地方表现出来了。我说的是
...1.8.1 Ninja1.8.2 Gaab1.9.1 Foo1.10.1 Baa...
...
1.8.1 Ninja
1.8.2 Gaab
1.9.1 Foo
1.10.1 Baa
但是处理字符串并希望排序会给出以下顺序:
[1.10.1 Baa, 1.8.1 Ninja, 1.8.2 Gaab, 1.9.1 Foo]
有什么简单而漂亮的python方法可以解决这个问题吗?你知道吗
您需要lambda,其中三个键是从节编号中获得的,即从拆分节编号中获得的三个整数,如下所示:
lambda
>>> lst = ['1.10.1 Baa', '1.8.1 Ninja', '1.8.2 Gaab', '1.9.1 Foo'] >>> sorted(lst, key=lambda x:([int(x) for x in x.split()[0].split('.')])) ['1.8.1 Ninja', '1.8.2 Gaab', '1.9.1 Foo', '1.10.1 Baa']
sorted(section_names, key=lambda x: tuple(map(int, x.partition(" ")[0].split("."))))
利用元组按所需顺序排序的事实:
strList = ["1.8.1 Ninja", "1.8.2 Gaab", "1.9.1 Foo", "1.10.1 Baa"] sorted(( (tuple(map(int, x.split('.'))), y) # Sort according to list numbers for s in strList for [x, y] in [s.split(' ', 1)] # [x, y] = s.split(' ', 1) # Splits list in exactly 2 elems )) # Out[43]: # [((1, 8, 1), 'Ninja'), # ((1, 8, 2), 'Gaab'), # ((1, 9, 1), 'Foo'), # ((1, 10, 1), 'Baa')]
您需要
lambda
,其中三个键是从节编号中获得的,即从拆分节编号中获得的三个整数,如下所示:利用元组按所需顺序排序的事实:
相关问题 更多 >
编程相关推荐