对列表中的数字进行排序 - Python

时间:2015-02-18 19:29:26

标签: python list sorting

说我有我要排序的列表 - 从最高到最低的数字 - 包含姓名和数字,例如:

A = ["LA" , 10 , 3 , 4]  #lists ending with a comma after the closing bracket are interpreted as tuples containing a list
B = ["NY" , 4 , 2 , 2] #need quotes around the AK, etc
C = ["AK" , 1 , 4 , 6] ,
D = ["WA" , 7 , 9 , 2] ,

如何对这些列表进行排序以使数字按降序排列(从最高到最低)?

2 个答案:

答案 0 :(得分:0)

按降序排列; (文本将首先出现)

>>> import numbers
>>> import sys

>>> A = ["LA", 10, 3, 4]
>>> print sorted(A, key=lambda n: n if isinstance(n, numbers.Number) else sys.float_info.max, reverse=True)
['LA', 10, 4, 3]

升序; (文本将首先出现)

>>> print sorted(A, key=lambda n: n if isinstance(n, numbers.Number) else sys.float_info.min, reverse=False)
['LA', 3, 4, 10]

按降序排列; (文本将在最后)

>>> print sorted(A, key=lambda n: n if isinstance(n, numbers.Number) else sys.float_info.min, reverse=True)
[10, 4, 3, 'LA']

答案 1 :(得分:-1)

尝试:

a=['gg', 10, 1, 100, 55]
def myKey(x):
   if isinstance(x,str):
       return -99999999
   else:
       return x #or -1 * key if you want the numbers in reverse order
a.sort(key=myKey)
reversed(a) #will give you a in reversed order -- string at the end

key参数指定一个用于“转换”的函数。将每个元素放入要排序的键中。反向迭代器只是以相反的顺序给出元素....