如何对列表(非整数)进行排序?

时间:2013-11-20 22:49:02

标签: python list sorting

我有一个列表如下:

[['10.2100', '0.93956088E+01'],
 ['11.1100', '0.96414905E+01'],
 ['12.1100', '0.98638361E+01'],
 ['14.1100', '0.12764182E+02'],
 ['16.1100', '0.16235739E+02'],
 ['18.1100', '0.11399972E+02'],
 ['20.1100', '0.76444933E+01'],
 ['25.1100', '0.37823686E+01'],
 ['30.1100', '0.23552237E+01'],...] 

(这里看起来好像已经订购了,但这里没有包含其他一些元素,以避免一个巨大的清单,但是没有按顺序排列)
我想通过每对的第一个元素对它进行排序,我已经看到了几个非常相似的问题,但在所有情况下,这些例子都是整数,我不知道这是不是为什么当我使用{{1}时}或分拣机,或list.sort(key=lambda x: x[0])的版本我得到以下内容:

operator.itemgetter(0)

显然正在做的是按每对中第一个元素中出现的第一个字符进行排序。

有没有办法使用[['10.2100', '0.93956088E+01'], ['100.1100', '0.33752517E+00'], ['11.1100', '0.96414905E+01'], ['110.1100', '0.25774972E+00'], ['12.1100', '0.98638361E+01'], ['14.1100', '0.12764182E+02'], ['14.6100', '0.14123326E+02'], ['15.1100', '0.15451733E+02'], ['16.1100', '0.16235739E+02'], ['16.6100', '0.15351242E+02'], ['17.1100', '0.14040859E+02'], ['18.1100', '0.11399972E+02'], ...] list.sort对第一个元素进行排序?

1 个答案:

答案 0 :(得分:5)

不要使用list作为变量名!

some_list.sort(key=lambda x: float(x[0]) )

会将第一个元素转换为float并按数字比较而不是按字母顺序

(注意,施放到浮动仅用于比较......该项目仍然是列表中的字符串)