python - 按字母顺序对列表中的子列表进行排序
问题描述
我正在尝试按字母顺序对列表中的子列表进行排序,并且已经看到它.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']]
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'
]
正确的?
解决方案
试试这个:
for e in lis:
e.sort()
这将就地对外部列表(即每个内部列表)的所有元素进行排序。
如果您需要排序副本,请查看@Mykola Zotko 的答案。不过,就地分拣更便宜。
您的方法是这样做的:按内部列表的第一个元素对外部列表进行排序。不幸的是,基于第一个元素,外部列表已经排序('. Michels' < '. Snchez' < 'A-Nasser Ansari'
因为'.'
在 ASCII 代码中的所有字母之前)。所以你的方法没有改变。
推荐阅读
- typescript - Typescript:如何引用数组定义的子类型?
- c# - 从 SQL Server 在 C# 中查询 JSON
- git - 如何在不丢失更改的情况下重做cherrypick的合并冲突解决方案(提交后)?
- sql-server - 是否可以在 VBS 中取消本地化 MSSQL 结果?
- reactjs - 如何在反应路由器路由转换之间有一个加载图标?
- javascript - 我不能将动态创建的元素的背景颜色更改超过 2 次
- python - 有没有一种 Pythonic 方法来转置 numpy 矩阵的 1 行/列?
- html - 由于边框折叠属性,表格的边框半径不起作用
- php - php modbus over tcp(设备网关)
- angular - Ionic HttpClient GET 在浏览器中有效,但在设备上无效