我有一个列表如下:
[['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
对第一个元素进行排序?
答案 0 :(得分:5)
不要使用list作为变量名!
some_list.sort(key=lambda x: float(x[0]) )
会将第一个元素转换为float并按数字比较而不是按字母顺序
(注意,施放到浮动仅用于比较......该项目仍然是列表中的字符串)