Python sort()lis的第一个元素

2024-06-07 01:03:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含非特定数量元素的列表,但是嵌套列表的每个第一个元素都是一个标识符,我想使用该标识符按顺序对列表进行排序

list = [['D', 'F', 'E', 'D', 'F', 'D'],['A', 'F', 'E', 'C', 'F', 'E'],['C', 'E', 'E', 'F', 'E', 'E'],['B', 'F', 'E', 'D', 'F', 'F']]

分类后

list = [['A', 'F', 'E', 'C', 'F', 'E'],['B', 'F', 'E', 'D', 'F', 'F'],['C', 'E', 'E', 'F', 'E', 'E'],['D', 'F', 'E', 'D', 'F', 'D']]

我正在使用Python3.3.3


Tags: 元素列表数量排序顺序分类标识符list
3条回答

要使用.sort()sorted

>>> t = [['D', 'F', 'E', 'D', 'F', 'D'], ['A', 'F', 'E', 'C', 'F', 'E'], ['C', 'E', 'E', 'F', 'E', 'E'], ['B', 'F', 'E', 'D', 'F', 'F']]
>>> t.sort(key=lambda x: x[0])  # changes the list in-place (and returns None)
>>> t
[['A', 'F', 'E', 'C', 'F', 'E'], ['B', 'F', 'E', 'D', 'F', 'F'], ['C', 'E', 'E', 'F', 'E', 'E'], ['D', 'F', 'E', 'D', 'F', 'D']]

还要注意,列表的元素之间需要逗号。以下是sorted的结果:

>>> sorted(t)  # does not change the list but returns the sorted list
[['A', 'F', 'E', 'C', 'F', 'E'], ['B', 'F', 'E', 'D', 'F', 'F'], ['C', 'E', 'E', 'F', 'E', 'E'], ['D', 'F', 'E', 'D', 'F', 'D']]

如您所见,后一个示例对列表进行排序,而不使用任何键参数。前一个示例也可以;但是您提到只有第一个元素是唯一的标识符,因此无法判断除了第一个元素之外对列表进行排序的次要条件是什么。

Python根据第一个元素自动对列表列表进行排序。例如:

lol=[[1,2,3],[5,6,7],[0,9,9]]
sorted(lol)
[[0, 9, 9], [1, 2, 3], [5, 6, 7]]

lists.sort(key = lambda x: x[0]) 确保在较大的列表中的每个列表之间加上逗号。

相关问题 更多 >