2017-04-26 50 views
0

我想排序格式的元组的列表排序由第一个元素的元组的列表是float:类型错误:“浮动”对象未标化的

[(0.001,"hello"), (0.005,"world"),(0.004,"sort"), (0.002,"me")] 

这应该给输出:

[(0.001, "hello"), (0.002,"me"), (0.004, "sort"), (0.005, "world")] 

目前我使用的方法

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

然而,这给出了错误:

TypeError: 'float' object is not subscriptable 

这是什么原因,我该如何解决?

我使用Python 3.6.1版

非常感谢

+0

我测试这一点,我已经得到了零次失误,如预期运行。你确定没有语法错误? – EthanBar

+0

@EthanBar我正在使用代码lis = sorted(fittestres,key = lambda x:x [0]),这仍然给我错误TypeError:'float'对象不可订阅 – Danny

+0

什么是'fittestres'?这是一个浮动列表吗?你使用'sorted()'和lambda表达式是正确的_if_你传递了你在问题中显示的列表。但是,如果您传递的是浮动列表,那么您将看到该错误。检查你的输入。 – mhawke

回答

1

你可以做my_list = sorted(my_list)采取sorted()的自然排序机制的优势。

此外,我没有得到你所做的错误,而且我猜这是因为你在sorted(list, key=...的调用中使用了保留字list``。尝试命名它别的东西。

下面是一个IPython的REPL会话:

Jupyter console 5.1.0 

Python 3.6.0 (default, Dec 24 2016, 08:01:42) 
Type "copyright", "credits" or "license" for more information. 

IPython 5.2.2 -- An enhanced Interactive Python. 
?   -> Introduction and overview of IPython's features. 
%quickref -> Quick reference. 
help  -> Python's own help system. 
object? -> Details about 'object', use 'object??' for extra details. 



In [1]: x = [(0.001,"hello"), (0.005,"world"),(0.004,"sort"), (0.002,"me")] 

In [2]: sorted(x) 
Out[2]: [(0.001, 'hello'), (0.002, 'me'), (0.004, 'sort'), (0.005, 'world')] 

In [3]: sorted(x, key=lambda x: x[0]) 
Out[3]: [(0.001, 'hello'), (0.002, 'me'), (0.004, 'sort'), (0.005, 'world')] 
+0

嗨@jknupp这会返回错误TypeError:'''不支持'str'和'float'的实例 – Danny

+0

在回复您的编辑jknupp时,即使重命名为my_list,它仍然给我我在我的评论中提到的错误 – Danny

+0

@丹尼:你的想法不是你的想法。列表中可能有一个由一个字符串和一个浮点组成的元组元素,例如'('abc',0.123)'。或者它可以是两个浮点数,例如第一个与另一个元素相同,从而导致第二个元组元素进行比较:导致字符串和浮点数的比较。例如([(0.1,'abc'),('abc',0.123)])'或'sorted([(0.1,0.123),(0.1,'abc')])''。这两个都会引发'TypeError:无法定型的类型:str() mhawke

相关问题