【发布时间】:2022-01-11 13:54:12
【问题描述】:
我有以下配对列表:
test1 = [["A", 1],["A", 4], ["D", "Yes"], ["G", 12], ["B", True], ["H", "No"], ["G", 54], ["Z", 412.41]]
test2 = [["D", "Yes"], ["B", True], ["Z", 412.41], ["A", 4], ["G", 12], ["A", 1], ["G", 54], ["H", "No"]]
我希望能够将每个列表排序为确定的顺序。我不关心确切的顺序,但是如果我对两个相同的列表进行排序,那么我希望它们以相同的顺序结束。
我试过了:
test1.sort(key=lambda x: x[1])
test2.sort(key=lambda x: x[1])
但我得到了错误:
TypeError: '<' not supported between instances of 'str' and 'int'
如何对包含不兼容类型(如 str、bool、int、float)元素的列表进行一致的排序?
【问题讨论】:
-
结果应该是什么?告诉您如何比较子列表的规则是什么——您希望它们按什么顺序排列,根据什么逻辑,为什么?通过这种排序方式,你希望解决什么问题?
-
不要调用列表列表 - 隐藏 list() 构建
-
我强烈建议不要调用列表
list。list已经是 python 中内置类list的名称。将特定列表命名为list会造成混淆,实际上可能会导致意想不到的后果。 -
@KarlKnechtel 问题是我希望收到 2 个列表,其中包含相同的列表,我想比较它们,但顺序可能会混淆。所以在比较之前,我想确保它们的顺序相同。
-
那么,任何一致的排序都行得通吗?给定的答案或多或少是我提出的,那么,是的。