擅长:python、mysql、java
<p>这似乎是一个非常奇怪的数据集,但假设您真的需要它:<br/>
如果删除开头和结尾的<code>0</code>,则排序相当容易:</p>
<pre><code>>>> l = ['entrya', 5, 'entryb', 10, 'anotherentry', 7, 'entry', 1, 'entryd', 30]
>>> [b for a in sorted(zip(*[iter(l)]*2), key=lambda x: x[1]) for b in a]
['entry', 1, 'entrya', 5, 'anotherentry', 7, 'entryb', 10, 'entryd', 30
</code></pre>
<p>所以假设你没有<code>0</code>作为你的另一个<code>entries</code>的值,那么你可以把它当作两种情况来处理,把所有不是零的东西成对地排序,然后把所有的零加回去。你知道吗</p>
<pre><code>>>> l = [0,0,0,0,0,'entrya',5, 'entryb', 10, 'anotherentry', 7, 'entry', 1, 'entryd', 30, 0,0,0,0,0]
>>> pairs = [b for a in sorted(zip(*[iter(filter(lambda x: x!=0, l))]*2), key=lambda x: x[1]) for b in a]
>>> zeros = list(filter(lambda x: x == 0, l))
>>> pairs + zeros
['entry', 1, 'entrya', 5, 'anotherentry', 7, 'entryb', 10, 'entryd', 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
</code></pre>