如何在Python的单个元素中对具有不同字符优先级的嵌套列表进行排序?

elw*_*lwc 2 python sorting list nested-lists

很抱歉无法获得好的头衔.

我有一个清单:

some_list = [[X, '4x01'], [X, '3x02'], [X, '4x02'], [X, '3x01']]
Run Code Online (Sandbox Code Playgroud)

这里X是我不小心.

我想使用以下优先级对列表中的第二个元素进行排序:

  1. 第一个字符按降序排列.
  2. 最后2个字符按升序排列.

最终输出应该是:

some_list = [[X, '4x01'], [X, '4x02'], [X, '3x01'], [X, '3x02']]
Run Code Online (Sandbox Code Playgroud)

注意:给出错误答案的解决方案是:

output = sorted(some_list, key=lambda lis: lis[3], reverse=True)
Run Code Online (Sandbox Code Playgroud)

Amb*_*ber 6

output = sorted(some_list, key=lambda x: (-ord(x[1][0]), x[1][-2:]))
Run Code Online (Sandbox Code Playgroud)

示例运行(将X定义为None可以复制粘贴列表定义):

>>> X = None
>>> some_list = [[X, '4x01'], [X, '3x02'], [X, '4x02'], [X, '3x01']]
>>> output = sorted(some_list, key=lambda x: (-ord(x[1][0]), x[1][-2:]))
>>> output
[[None, '4x01'], [None, '4x02'], [None, '3x01'], [None, '3x02']]
Run Code Online (Sandbox Code Playgroud)