在python中使用自定义比较器函数进行排序
我有一个列表L=['92','022'],['77','13'],['82','12']] 要在第二个元素上按键进行排序:['022'、'13'、'12'] 必须使用自定义函数进行数字排序和字典排序。 但是没有得到想要的输出 用于对输出进行数字排序,如:['82','12'],['77','13'],['92','022']] 对于按字典顺序排序的输出,如:['92','022'],['82','12'],['77','13']]在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
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']]