擅长:python、mysql、java
<p>正如@NullUserException所说,您不能分两步进行排序,因为第二步将只根据中间列进行重组,而忽略第一列(str)。在</p>
<p>在适当转换数据后,您可以一次性完成排序,而且不必担心键:</p>
<pre><code>s='''ABC - 0.2 - 15
BAC - 1.2 - 10
ABC - 1.3 - 29
ABC - 0.7 - 11'''
data = s.split('\n')
data
Out[5]: ['ABC - 0.2 - 15', 'BAC - 1.2 - 10', 'ABC - 1.3 - 29', 'ABC - 0.7 - 11']
newdata = [(i[0],float(i[1]),i[2]) for i in [k.split(' - ') for k in data]]
newdata
Out[10]:
[('ABC', 0.2, '15'),
('BAC', 1.2, '10'),
('ABC', 1.3, '29'),
('ABC', 0.7, '11')]
sorted(newdata)
Out[11]:
[('ABC', 0.2, '15'),
('ABC', 0.7, '11'),
('ABC', 1.3, '29'),
('BAC', 1.2, '10')]
</code></pre>
<p>另一种方法:如果输入数据重组需要大量操作,则使用lambda键可能是更简单的方法:</p>
^{pr2}$