如何在列表中对字符串进行数字排序

时间:2014-04-01 08:01:42

标签: python list sorting

我在列表中有一个列表,内部列表包含数字(浮点)和单词的字符串。 我需要对列表进行排序,位于列表[0]中。例如,

list = [['8.34', 'a'],['3.55', 'c'],['5.92', 'b']]

我正在尝试按数字对列表进行排序,看起来像

list = [['3.55', 'c'],['5.92', 'b'],['8.34', 'a']] 

我试过

sorted(list, key = float)

但是我收到一条错误消息:'float()参数必须是字符串或数字'我也尝试过使用lambda。两者都不起作用。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

您可以尝试传递lambda功能。:

sorted(my_list, key = lambda x : float(x[0]))

x将是列表的一个元素(也是一个列表,因为my_list是一个列表列表),float(x[0])将返回该列表的第一个元素。

<强>演示:

>>> my_list = [['8.34', 'a'],['3.55', 'c'],['5.92', 'b']]
>>> print sorted(my_list, key = lambda x : float(x[0]))
[['3.55', 'c'], ['5.92', 'b'], ['8.34', 'a']]

注意:

  • 不要使用list作为变量的名称,因为您将隐藏其内置实现。

答案 1 :(得分:2)

您的列表包含列表,因此您无法直接使用float。您需要使用一个函数来返回每个列表中第一个项的浮点值。

>>> lis = [['8.34', 'a'],['3.55', 'c'],['5.92', 'b']]
>>> lis.sort(key=lambda x: float(x[0]))
>>> lis
[['3.55', 'c'], ['5.92', 'b'], ['8.34', 'a']]

答案 2 :(得分:-2)

此前面的答案也适用于您的情况: How to sort a list of lists by a specific index of the inner list?

from operator import itemgetter
list = [['8.34', 'a'],['3.55', 'c'],['5.92', 'b']]
print sorted(list, key=itemgetter(0))

给出了所需的输出:

[['3.55', 'c'], ['5.92', 'b'], ['8.34', 'a']]