首页 > 解决方案 > 如何将包含 String 和 Int 的子列表排序为字符串

问题描述

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

   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']]

以任何类似的格式。

标签: python-3.xlist

解决方案


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

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']]

推荐阅读