3

假设我在 python 中有以下列表

[ [1,"C"], [2, "D"], [3,"a"], [4,"b"] ]

我想按字母对列表进行排序,这样就可以了

[ [3,"a"], [4,"b"], [1,"C"], [2, "D"] ]

要按内在性格排序,我会这样做sorted(unsortedlist, key=itemgetter(1))
要通过忽略大小写进行排序,我会这样做sorted(unsortedlist, key=str.lower)

如何按内部元素排序并同时忽略大小写?

4

2 回答 2

5

这是匿名函数的(罕见)用例之一:

>>> sorted([[1, 'C'], [2, 'D'], [3, 'a'], [4, 'b']], key=lambda x: x[1].lower())
[[3, 'a'], [4, 'b'], [1, 'C'], [2, 'D']]

Lambda 通常有点笨拙和不符合 Python 标准,但不幸的是,没有内置于 python 的“compose”函数

于 2015-03-19T22:43:27.837 回答
4

要么是一个 lambda:

sorted(unsortedlist, key=lambda x: x[1].lower())

或常规功能:

def my_key(x):
    return x[1].lower()

sorted(unsortedlist, key=my_key)
于 2015-03-19T22:43:32.140 回答