如何对包含String和Int作为字符串的子列表进行排序

时间:2019-07-04 17:50:36

标签: python-3.x list

我需要根据字符串形式的整数对列表进行排序,并且列表还包含st字母。

   li = [['dr','3','mn'],['fs','1','a'],['2','rt',c]]

我需要如下输出:

   li = [['fs','1','a'],['2','rt',c],['dr','3','mn']]

   li = [[1,'fs','a'],[2,'rt',c],[3,'dr','mn']]

采用任何此类格式。

1 个答案:

答案 0 :(得分:1)

此代码假设数字是整数,并且每个列表中至少有一个数字:

li = [['11','rt','c'],['dr','3','mn'],['fs','1','a'],['2','rt','c']]

def is_number(s):
    try:
        i = int(s)
        return True
    except ValueError:
        return False

print([li[i[-1]] for i in sorted([[int(j), ii] for ii, i in enumerate(li) for j in i if is_number(j)])])

打印:

[['fs', '1', 'a'], ['2', 'rt', 'c'], ['dr', '3', 'mn'], ['11', 'rt', 'c']]