2013-06-26 104 views
-1

欲排序蟒基於陣列的各一個子陣列的第一個值 [[1437510001L,「UNLOCK_SRV_BIND_ACCOUNT-39400016380001」,「LOC-東西-39400016380001」], [1437500001L , 'UNLOCK_SRV_BIND_ACCOUNT-39400016370001', 'LOC-東西-39400016370001'], [1437490001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016360001', 'LOC-東西-39400016360001'], [1437480001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016350001',「LOC-stuff- 39400016350001' ], [1437520001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016390001', 'LOC-東西-39400016390001']]如何排序陣列蟒陣列

這些陣列我處理通常是一個最大的200

基本上我需要做的是排序最大值到最小值。

d

回答

0

使用list.sort

>>> mylist = [[1437510001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016380001', 'loc-stuff-39400016380001'], [1437500001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016370001', 'loc-stuff-39400016370001'], [1437490001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016360001', 'loc-stuff-39400016360001'], [1437480001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016350001', 'loc-stuff-39400016350001'], [1437520001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016390001', 'loc-stuff-39400016390001']] 
>>> mylist.sort() 
>>> print mylist 
[[1437480001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016350001', 'loc-stuff-39400016350001'], [1437490001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016360001', 'loc-stuff-39400016360001'], [1437500001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016370001', 'loc-stuff-39400016370001'], [1437510001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016380001', 'loc-stuff-39400016380001'], [1437520001L, 'UNLOCK_SRV_BIND_ACCOUNT-39400016390001', 'loc-stuff-39400016390001']] 
+0

爲什麼這會降低投票率? – TerryA

+0

因爲你幾乎不需要使用'key = itemgetter(0)'進行排序,因爲Python序列[按照字典順序進行比較](http://docs.python.org/2/tutorial/datastructures.html#comparing-序列和其他類型):「首先比較前兩項,如果它們不同則確定比較的結果;如果它們相等,則比較下兩項,等等,直到任一序列是累」。所以你可以在這裏簡單地使用'mylist.sort()'。 –

+0

@BenHoyt哦,我不知道這:)。謝謝! – TerryA

1

在Python,序列是compared lexicographically,意思是「第一前兩項進行比較,如果不同,就確定比較的結果;如果它們相等,接下來的兩個項目進行比較,所以直到任一序列被耗盡爲止「。

所以在你的情況下,你可以簡單地使用一個普通的電話list.sort。而且,由於要排序從大到小,使用reverse=True關鍵字ARG:

lst.sort(reverse=True) 

這個排序到位名單。如果您想要保留lst不變,並返回新的排序列表,請使用:

sorted_list = sorted(lst, reverse=True)