擅长:python、mysql、java
<p>这里有一种方法,使用<a href="https://docs.python.org/3.6/tutorial/datastructures.html" rel="nofollow noreferrer">^{<cd1>}</a>导出排序顺序。你知道吗</p>
<pre><code>fruits = ['apple', 'banana', 'orange']
labels = ['banana2', 'apple2', 'orange1', 'banana1', 'apple1', 'apple3']
res = sorted(labels, key=lambda x: fruits.index(x[:-1]))
# ['apple2', 'apple1', 'apple3', 'banana2', 'banana1', 'orange1']
</code></pre>
<p>也可以使用<code>tuple</code>作为排序键,并结合一些正则表达式来分隔任意大小的整数。你知道吗</p>
<pre><code>import re
fruits = ['apple', 'banana', 'orange']
labels = ['banana2', 'apple2', 'orange1', 'banana1', 'apple10', 'apple3']
def sorter(mystr, fruits):
str_split = re.match(r'([a-z]+)([0-9]+)', mystr, re.I).groups()
return (fruits.index(str_split[0]), int(str_split[1]))
res2 = sorted(labels, key=lambda x: sorter(x, fruits))
# ['apple2', 'apple3', 'apple10', 'banana1', 'banana2', 'orange1']
</code></pre>