排序没有区分大小写的元组列表

Dav*_*ill 5 python sorting tuples case-insensitive

如何在不对案例敏感的情况下高效轻松地对元组列表进行排序?

例如:

[('a', 'c'), ('A', 'b'), ('a', 'a'), ('a', 5)]
Run Code Online (Sandbox Code Playgroud)

应该看起来像这样排序:

[('a', 5), ('a', 'a'), ('A', 'b'), ('a', 'c')]
Run Code Online (Sandbox Code Playgroud)

常规的词典排序会在'a'之前加上'A'并产生这个:

[('A', 'b'), ('a', 5), ('a', 'a'), ('a', 'c')]
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 10

您可以使用sort's key参数来定义您希望如何考虑每个元素的排序:

def lower_if_possible(x):
    try:
        return x.lower()
    except AttributeError:
        return x

L=[('a', 'c'), ('A', 'b'), ('a', 'a'), ('a', 5)]

L.sort(key=lambda x: map(lower_if_possible,x))
print(L)
Run Code Online (Sandbox Code Playgroud)

有关如何使用的说明,请参见http://wiki.python.org/moin/HowTo/Sortingkey.