python - 对不区分大小写的元组列表进行排序

标签 python sorting tuples case-insensitive

如何在不区分大小写的情况下高效轻松地对元组列表进行排序?

例如这个:

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

排序后应该是这样的:

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

常规的词典排序会将 'A' 放在 'a' 之前并产生:

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

最佳答案

您可以使用sortkey 参数来定义您希望如何看待每个元素的排序:

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)

参见 http://wiki.python.org/moin/HowTo/Sorting有关如何使用 key 的说明。

关于python - 对不区分大小写的元组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2494740/

相关文章:

javascript - 如何在 Javascript 中排序日期时间字符串?

angular - Typescript 元组 rxj6 switchMap

python - 对齐返回元组而不是 Pandas DataFrame

python - 如何在 Python 中将并集/交集方法作为参数传递?

python - 将 datetime64 列拆分为 pandas 数据框中的日期和时间列

python - 在 python 正则表达式中使用 OR 的最佳方法是什么

Python 嵌套循环成语

java - 根据数字键的顺序在 map 中排序

python - 带有 lambda 函数的 sorted()

python - np.where() 的内部工作原理以及如何检查空/无