使用存储在另一个列表中的自定义顺序对字符串列表进行排序

迪拉·维杰森达拉

我有一个包含 2 或 3 个字符串的列表,最后一个字符相同。

example_list = ['h1','ee1','hi1','ol1','b1','ol1','b1']

有没有办法使用另一个列表的顺序对这个列表进行排序。

order_list = ['ee','hi','h','b','ol']

所以答案应该是这样的 example_list.sort(use_order_of=order_list)

哪个应该产生像这样的输出 ['ee1','hi1','h1','b1','b1','ol1','ol1']

我在 StackOverflow 上发现了其他问题,但我仍然无法找到一个很好解释的答案。

威尔·达席尔瓦

您可以构建一个order_map将前缀映射到其排序键的映射,然后在调用时使用该映射作为键sorted

example_list = ['h1','ee1','hi1','ol1','b1','ol1','b1']
order_list = ['ee','hi','h','b','ol']
order_map = {x: i for i, x in enumerate(order_list)}
sorted(example_list, key=lambda x: order_map[x[:-1]])

这比调用order_list.index每个元素有优势,因为从字典中获取元素很快。

您还可以order_list通过使用dict.get默认值使其与缺少的元素一起使用如果默认值很小(例如-1),则未出现在其中的值order_list将放在排序列表的前面。如果默认值很大(例如float('inf')),则未出现的值order_list将放在排序列表的后面。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过存储在另一个列表中的索引值对一个列表进行排序

使用完全自定义的多个规则对字符串列表进行排序

用另一个字符串列表对字符串列表进行排序

如何通过使用另一个列表中项目的顺序对字符串列表进行排序?

根据R中另一个列表的顺序对列表进行排序

使用另一个列表对Python列表中的字符串进行排序

根据另一个列表中子字符串的顺序对列表进行排序

如何通过R中的自定义规则对字符串列表进行排序?

检查另一个列表中的字符串列表中是否存在字符串字符?

如何在存储过程中创建字符串列表变量,以及如何在另一个查询中使用它?

使用另一个列表中的字符串在列表列表中对元素进行分组

如何用另一个列表中的项目替换文本中的字符串列表?

如何有效地将字典中的字符串列表与Python中的另一个字典列表进行比较?

从Flutter中的另一个文件中调用字符串列表

搜索字符串列表以仅返回与Linq中的另一个输入字符串列表匹配的那些字符串

查找字符串列表中的字符串是否在Esper中的另一个字符串列表中

根据另一个字符串列表对字符串列表进行排序

如何基于另一个列表的元素对字符串数组进行排序

如何检查列表中的元素是否与字符串列表中的另一个元素匹配?

如何使用 Python 按另一个字符串列表对字符串列表进行分组?

将一个字符串列表与另一个字符串列表进行比较

如何以自定义顺序对给定的字符串列表进行排序?

验证字符串列表中的自定义排序

如何使用自定义条件对一个列表列表进行排序?

Python:根据另一个字符串对相似字符串列表进行排序

根据该值在另一个列表中的出现顺序对列表进行排序

在颤动中自定义排序字符串列表

如何从包含另一个字符串列表的任何项目的字符串列表中打印出列表项

Dart:在另一个列表中按顺序对列表进行排序