2017-04-26 53 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

相關問題