首先根据长度对字符串元素列表排序,然后根据长度匹配的元素的字母顺序对其排序

2024-10-01 04:47:29 发布

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

你好

请求你帮助解决我目前面临的问题。我有一个名为username的列表,如下所示:

用户名=['Paul'、'Polish'、'poloski'、'melind'、'Melinda'、'MeRind'、'arabic'、'arabia']

a)我想根据长度/排序的降序排列此列表 b) 对于长度相同的元素,我想根据组成元素的每个字母在字典中的显示方式对它们进行排序(例如,“arabic”在“arabic”之前)

为了更清楚,我的目标是创建最终的修改列表,以显示如下内容:

[“梅林达”,“波洛斯基”,“阿拉伯”,“阿拉伯语”,“梅林”,“梅林”,“波兰语”,“保罗”)

感谢你的帮助


Tags: 元素列表排序字母username用户名paulpolish
2条回答

你可以这样做:

username.sort(key=lambda item: (-len(item), item.lower()), reverse=False)                                                                                                           

In [3715]: username                                                                                                                                                                            
Out[3715]: 
['Melinda',
 'poloski',
 'arabia',
 'arabic',
 'melind',
 'MeRind',
 'Polish',
 'Paul']



您可以在如下数据帧中执行此操作:

pd.DataFrame(username).apply(lambda x: list((sorted(x, key=lambda item: (-len(item), item.lower())))))                                                                              

         0
0  Melinda
1  poloski
2   arabia
3   arabic
4   melind
5   MeRind
6   Polish
7     Paul


^{}可以采取一个函数,返回一个元组作为键,每个元组的第一个元素将用于排序,然后在第二个元素上发生冲突,依此类推

先按长度再按字母顺序排序(忽略大小写)

sorted(username, key=lambda u: (len(u), u.lower()))

相关问题 更多 >