在python中使用自定义比较器函数进行排序

在python中使用自定义比较器函数进行排序,python,sorting,comparator,custom-sort,Python,Sorting,Comparator,Custom Sort,我有一个列表L=['92','022'],['77','13'],['82','12']] 要在第二个元素上按键进行排序:['022'、'13'、'12'] 必须使用自定义函数进行数字排序和字典排序。 但是没有得到想要的输出 用于对输出进行数字排序,如:['82','12'],['77','13'],['92','022']] 对于按字典顺序排序的输出,如:['92','022'],['82','12'],['77','13']] from functools import cmp_to_key

我有一个列表L=['92','022'],['77','13'],['82','12']]

要在第二个元素上按键进行排序:['022'、'13'、'12']

必须使用自定义函数进行数字排序和字典排序。 但是没有得到想要的输出

用于对输出进行数字排序,如:['82','12'],['77','13'],['92','022']]

对于按字典顺序排序的输出,如:['92','022'],['82','12'],['77','13']]

from functools import cmp_to_key

L = [['92', '022'], ['77', '13'], ['82', '12']]
key=2

def compare_num(item1,item2):
   return (int(item1[key-1]) > int(item2[key-1]))

def compare_lex(item1,item2):
   return item1[key-1]<item2[key-1]

print(sorted(l, key=cmp_to_key(compare_num)))
print(sorted(l, key=cmp_to_key(compare_lex)))


从functools导入cmp\u到\u键
L=['92','022',['77','13',['82','12']]
键=2
def比较数量(项目1、项目2):
返回(int(item1[key-1])>int(item2[key-1]))
def比较法(第1项、第2项):

return item1[key-1]您正在使它变得复杂<代码>键
参数可以采用自定义函数

l = [['92', '022'], ['77', '13'], ['82', '12']]
key = 2

def compare_num(item1):
   return int(item1[key-1])

def compare_lex(item1):
   return item1[key-1]

print(sorted(l, key=compare_num))
print(sorted(l, key=compare_lex))

请试试这个-它应该可以工作:

L = [['92', '022'], ['77', '13'], ['82', '12']]

#Numerically sorted:
sorted(L, key = lambda x: x[-1])
[['92', '022'], ['82', '12'], ['77', '13']]

#Lexicographically sorted:
sorted(L, key = lambda x: int(x[-1]))
[['82', '12'], ['77', '13'], ['92', '022']]