2014-02-20 48 views
0

我不知道是否有可能在所有的,但我有由許多值的像由數字和字符串的排序列表值

list = ["0.75543 blue", "0.5454 red", "0.113424 blue", "0.9993233 red" and so on] and so on. 

換句話說,我有0和1,兩者之間的值的列表標籤藍色和紅色。當我點擊array.sort()時,它不會正確排序,因爲列表中的值是字符串。我希望能夠根據值正確地對列表進行排序(獨立於標籤)。那可能嗎?

+1

你是說,根據數字排序? – thefourtheye

+0

是的。我只想對數字進行排序 – user3149650

+2

不要使用'list'作爲變量名稱,因爲它是內置類型和函數。 – 2rs2ts

回答

6

是的,你可以根據字符串第一部分的數字值進行排序。只要通過sort就可以從每個字符串中提取數字。

演示

>>> L = ["0.75543 blue", "0.5454 red", "0.113424 blue", "0.9993233 red"] 
>>> L.sort(key=lambda l: float(l.split()[0])) 
>>> L 
['0.113424 blue', '0.5454 red', '0.75543 blue', '0.9993233 red'] 

此外,根據你在做什麼,你可能會發現更容易保存的價值標籤對元組。然後,排序是更容易(而且可能更直觀):

>>> L = [(0.75543, "blue"), (0.5454, "red"), (0.113424, "blue"), (0.9993233, "red")] 
>>> L.sort(key=lambda t: t[0]) 
>>> L 
[(0.113424, 'blue'), (0.5454, 'red'), (0.75543, 'blue'), (0.9993233, 'red')] 

最後,請不要命名您的名單list; list是Python中的一種內置類型和函數(請參閱@ 2rs2ts的註釋)。

+0

我已經試過了,但它說屬性錯誤:'浮動'對象沒有屬性'拆分' – user3149650

+0

@ user3149650:你的列表是什麼樣的?它適用於我的演示中的列表,所以我假設你有點不同? – mdml