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.