2013-11-20 18 views
0

我有一个列表的列表,看起来像这样:如何对列表(非整数)进行排序?

[['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'],...] 

(这看起来好像它已经下令,但有些在这里不包含元素的其余部分,以避免巨大的名单,都没有按顺序)
我想按每一对的第一个元素对它进行排序,我已经看到了几个非常类似的问题,但在所有情况下,这些例子都是整数,我不知道这是为什么当我使用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.sortsorted()对第一个元素进行排序的方法?

回答

5

不要使用列表作为变量名!

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

将第一要素转换为浮动和comparit数字而非字母顺序

(注意投浮动仅用于比较...该项目仍然在列表中的字符串)

+0

非常感谢,我忽略了这个项目仍然是一个字符串的事实,并且必须“强制”它被看作是一个浮点数。 – jealopez