2015-05-18 61 views
0

我在Python中列出了以下列表。如何在Python中對以下結構進行排序

[[53.60495722746216, 'Percent Cats'], 
[45.298311033121294, 'Percent Dogs'], 
[1.0967317394165388, 'Percent Horses']] 

現在我想要動物的百分比最高。在這種情況下,它將是Cats

如何對此結構進行排序以獲取值?

+1

你想要單個值還是實際排序的列表? –

+0

下面是一個簡單的如何對Python進行排序的指南:https://docs.python.org/2.7/howto/sorting.html。相同的技術也適用於heapq和itertools模塊的* min()*,* max()*,* nsmallest()*,* nlargest()*和* groupby()*。 –

回答

8

如果您只需要獲取一個值,則不需要對列表進行排序。使用內置max功能自定義排序函數這樣

In [3]: max(l, key=lambda x: x[0])[1] # compare first elements of inner lists 
Out[3]: 'Percent Cats' 

甚至

In [4]: max(l)[1] # compare lists directly 
Out[4]: 'Percent Cats' 

後者的代碼也能發揮作用,因爲sequence objects may be compared to other objects with the same sequence type

比較操作按字典訂購:首先將前兩項 項目進行比較,如果它們不同,則確定 的結果裏森;如果它們相等,則比較接下來的兩個項目, 等等,直到任一序列被耗盡。如果兩個序列的所有項目 比較相等,則序列被認爲是相等的。

0
a = [[53.60495722746216, 'Percent Cats'], [45.298311033121294, 'Percent Dogs'], [1.0967317394165388, 'Percent Horses']] 
print sorted(a, key=lambda x:x[0], reverse=True)[0] 
相關問題