根据子列表中的第二个元素按字母顺序对列表进行排序,但不区分大小写[重复]

Posted

技术标签:

【中文标题】根据子列表中的第二个元素按字母顺序对列表进行排序,但不区分大小写[重复]【英文标题】:Sort a list alphabetically according to the second element in sublist but in case insensitive [duplicate] 【发布时间】:2021-12-30 22:38:34 【问题描述】:

我正在尝试根据子列表的第二个元素按字母顺序对包含子列表的列表进行排序。但结果是首先放置第二个元素为大写的子列表,最后放置第二个元素为小写的子列表。我希望它在不区分大小写的情况下对其进行排序。下面的示例解释了我想要更清楚的内容:

输入:

data = [[0, "ba"], [0, "ab"], [0, "BB"], [0, "AA"]]
print(sorted(data, key=lambda x: x[1]))

结果:

[[0, 'AA'], [0, 'BB'], [0, 'ab'], [0, 'ba']]

我想要什么:

[[0, 'AA'], [0, 'ab'], [0, 'ba'], [0, 'BB']]

我使用的是 Python 3.9.7。如何在不区分大小写的情况下根据子列表的第二个元素对列表进行排序?提前致谢!

【问题讨论】:

当你写key=lambda x: x[1]时,你对它是如何工作的理解是什么? @KarlKnechtel 我在网上找到了它。据我了解,x[1] 中的1 表示排序器应在子列表中查找哪个元素。 它的工作方式是您声明,对于原始列表中的每个 x 值,您应该根据 x[1] 的评估结果对它们进行排序。你能想出一些你可以做的其他计算,给你想要的排序顺序吗?您需要两个步骤:获取[1] 元素,并不区分大小写进行比较。你知道怎么做;链接的副本覆盖另一个。把它们放在一起。 @YılmazAlpaslan 首先你说I want it to sort it without being case sensitive. 但最后一句说:How can I make it to sort the list according to the second element of sublist without being case-insensitive? 我猜从你的其余信息来看第一个是正确的。正确的?请编辑清楚 @KarlKnechtel 我明白你的意思,谢谢。 【参考方案1】:

如果您需要它们不区分大小写。在比较之前告诉排序函数是上还是下:

data = [[0, "ba"], [0, "ab"], [0, "BB"], [0, "AA"]]
print(sorted(data, key=lambda x: x[1].upper()))

【讨论】:

非常感谢!有效。顺便说一句,我不能接受它作为答案,它告诉我等待 9 分钟。

以上是关于根据子列表中的第二个元素按字母顺序对列表进行排序,但不区分大小写[重复]的主要内容,如果未能解决你的问题,请参考以下文章

按元组的第二个元素对元组列表进行排序,无需高阶函数或递归

基于子数组的第二个元素对多维数组进行排序

python一个列表中元素为元祖,想要根据元祖的第二个值进行排序,怎么做

按字母顺序对字符串列表进行排序 (C)

按字典顺序对c ++中的多维向量进行排序

按字母顺序对列表中的名称进行排序?