我在列表中有一个列表,内部列表包含数字(浮点)和单词的字符串。 我需要对列表进行排序,位于列表[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。两者都不起作用。有人可以帮忙吗?
答案 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']]