擅长:python、mysql、java
<p>所发生的是,排序是字典式的,根据ASCII码对ASCII字符进行排序。这里我们有<code>'0'</code>的ASCII码是<code>48</code>,而<code>'_'</code>的ASCII码是95,这意味着<code>'0' < '_'</code>。你知道吗</p>
<p>为了获得一致性,您可以提供一个一致的比较函数。例如:</p>
<pre><code>def mycmp(s1, s2):
s1 = s1.split(pathA)[1].split('_')[0]
s2 = s2.split(pathA)[1].split('_')[0]
return cmp(s1, s2)
outp1.sort(cmp=mycmp)
</code></pre>
<p>这里的问题是在比较字符串之前使用相同的转换。你知道吗</p>
<p>这依赖于这样一种情况,因为你去掉了信息,你可能会去掉太多的信息,使元素变得不同,但在你的例子中,这意味着<code>outp1</code>的两个元素无论如何都会变得相同,所以这在这里并不重要。你知道吗</p>
<p>否则,必须在转换名称之前应用排序。这意味着不排序<code>filen</code>或<code>outp1</code>(因为这样它们的顺序将依赖于<code>listA</code>的顺序)。你知道吗</p>