我正在尝试按字母顺序排列列表中的子列表,并且已经看到.sort(key=lambda x: x[0])
是有效的here。以下是我的清单:
lis = [['. Michels',
'Lorenzo Petroli',
'Carlos Arthur Lang Lisba',
'Fernanda Gusmo de Lima Kastensmidt',
'Luigi Carro'],
['. Snchez', 'M. Rincn'],
['A-Nasser Ansari', 'Mohamed Abdel-Mottaleb']]
lis.sort(key=lambda x: x[0])
我现在调用lis
,第一个条目似乎什么都没发生:
[['. Michels',
'Lorenzo Petroli',
'Carlos Arthur Lang Lisba',
'Fernanda Gusmo de Lima Kastensmidt',
'Luigi Carro'],
['. Snchez', 'M. Rincn'],
['A-Nasser Ansari', 'Mohamed Abdel-Mottaleb']]
哪个应该是
['. Michels',
'Carlos Arthur Lang Lisba',
'Fernanda Gusmo de Lima Kastensmidt',
'Lorenzo Petroli',
'Luigi Carro'
]
是吗?你知道吗
您有一个列表,所以简单的解决方案是:
结果是:
或者,如果需要按某个条件排序,可以使用sorted with
key
,例如(将给出与第一个解决方案相同的结果):请尝试以下操作:
这将对外部列表(即每个内部列表)中的所有元素进行适当的排序。你知道吗
如果您需要排序副本,请查看@Mykola Zotko的答案。不过,就地分拣更便宜。你知道吗
您的方法是这样做的:按内部列表的第一个元素对外部列表进行排序。不幸的是,根据第一个元素,外部列表已经被排序(
'. Michels' < '. Snchez' < 'A-Nasser Ansari'
,因为'.'
在ASCII代码的所有字母之前)。所以你的方法没有改变什么。你知道吗您可以将函数
sorted()
映射到列表中的每个子列表:相关问题 更多 >
编程相关推荐