2013-06-26 101 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)