Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中对字母数字列表排序_Python_List_Sorting - Fatal编程技术网

如何在python中对字母数字列表排序

如何在python中对字母数字列表排序,python,list,sorting,Python,List,Sorting,我有一份清单 a = [["1", "ok", "na"], ["15", "asd", "asdasd"], ["100", "uhu", "plo"], ["10", "iju", "tlo"], ["ISC_1", "des", "det"], ["12", "asd", "assrg"], ["ARF", "asd", "rf"]] 我希望此列表按以下方式排序: [['1', 'ok', 'na'], ['10', 'iju', 'tlo'], ['12', 'asd', 'assrg

我有一份清单

a = [["1", "ok", "na"], ["15", "asd", "asdasd"], ["100", "uhu", "plo"], ["10", "iju", "tlo"], ["ISC_1", "des", "det"], ["12", "asd", "assrg"], ["ARF", "asd", "rf"]]
我希望此列表按以下方式排序:

[['1', 'ok', 'na'], ['10', 'iju', 'tlo'], ['12', 'asd', 'assrg'], ['15', 'asd', 'asdasd'], ['100', 'uhu', 'plo'], ['ARF', 'asd', 'rf'], ['ISC_1', 'des', 'det']]
[['1', 'ok', 'na'], ['10', 'iju', 'tlo'], ['100', 'uhu', 'plo'], ['12', 'asd', 'assrg'], ['15', 'asd', 'asdasd'], ['ARF', 'asd', 'rf'], ['ISC_1', 'des', 'det']]
我使用了a.sort()

其结果如下:

[['1', 'ok', 'na'], ['10', 'iju', 'tlo'], ['12', 'asd', 'assrg'], ['15', 'asd', 'asdasd'], ['100', 'uhu', 'plo'], ['ARF', 'asd', 'rf'], ['ISC_1', 'des', 'det']]
[['1', 'ok', 'na'], ['10', 'iju', 'tlo'], ['100', 'uhu', 'plo'], ['12', 'asd', 'assrg'], ['15', 'asd', 'asdasd'], ['ARF', 'asd', 'rf'], ['ISC_1', 'des', 'det']]

请帮助我在这种情况下如何排序。

您可以使用
命名参数。
它接受一个函数,该函数返回排序函数比较项目所依据的值

sorted(a, key = lambda l: int(l[0]))

要准备好接受非数字值,可以使用

a.sort(key = lambda l: int(l[0]) if l[0].isnumeric() else 99999)
# or
b=sorted(a,key = lambda l: int(l[0]) if l[0].isnumeric() else 99999)
查看非数字的最后一个或

a.sort(key = lambda l: int(l[0]) if l[0].isnumeric() else 0)
# or
b=sorted(a,key = lambda l: int(l[0]) if l[0].isnumeric() else 0)

要首先查看它们,可以使用自然排序键,使用正则表达式
re.split()

结果:

['1', 'ok', 'na']
['10', 'iju', 'tlo']
['12', 'asd', 'assrg']
['15', 'asd', 'asdasd']
['100', 'uhu', 'plo']
['ARF', 'asd', 'rf']
['ISC_1', 'des', 'det']

可能会回答您的问题可能会重复它在python2.7中工作吗?获取以下错误
>>>排序(a,key=lambda l:int(l[0]))回溯(最近一次调用):文件“”,第1行,排序(a,key=lambda l:int(l[0])name错误:名称“sort”未定义
带有a.sort(key=lambda l:int(l[0])或“b=sorted a,key=lambda l:int(l[0])如果我的列表是a=[“1”,“ok”,“na”][“15”、“asd”、“asdasd”]、[“100”、“uhu”、“plo”]、[“10”、“iju”、“tlo”]、[“ISC_1”、“des”、“det”]]这是在为int()抛出以10为底的无效文本:“ISC_1”你希望ISC发生什么?它是最后一个还是第一个?如果它应该最后一个:a.sort(key=lambda l:int(l[0])如果l[0]。isnumeric()else 9999)谢谢你的回复。我想要的结果是['1','ok','na'],['10','iju','tlo'],['12','asd','ASRG'],['15','asd','asdasd'],['100','uhu','plo'],['ARF','asd','rf'],['ISC_1','des det']],其中ARF优先,ISC_1最后