python - 使用 python 中的第一次出现进行分组排序?

标签 python algorithm list sorting

在 python 中,我有一个类列表,这些类有一个名为 category 的字符串字段。 让我们考虑以下示例:

mylist[0].category # = "furniture"
mylist[1].category # = "car"
mylist[2].category # = "fruit"
mylist[3].category # = "car"
mylist[4].category # = "furniture"

我的问题是:如何通过使用新类别的第一次出现来对列表重新排序?

使用前面的示例,结果将是:

mylist[0].category # = "furniture"
mylist[1].category # = "furniture"
mylist[2].category # = "car"
mylist[3].category # = "car"
mylist[4].category # = "fruit"

最佳答案

首先,按照与 my_list 相同的顺序获取类别列表。然后,根据每个项目的类别在类别列表中首次出现的位置对 my_list 进行排序。

categories = [item.category for item in my_list]
my_list.sort(key = lambda item: categories.index(item.category))

关于python - 使用 python 中的第一次出现进行分组排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457413/

相关文章:

python - 如何在给定的数据框中划分列 'location'?

python - 使用傻瓜盒对 CNN 进行攻击的代码,出了什么问题?

python - 填写缺失的日期值并根据上一行填充第二列

algorithm - 随机排序运行时间

algorithm - 为什么斐波那契堆需要级联切割?

python - 如何使用 xlwings 清除 Excel 中的筛选器?

algorithm - 了解归并排序算法

python - 类型错误:不支持的操作数类型 -: 'list' 和 'list'

python - 如何在 python 中将平面列表转换为二维数组?

list - 我如何称呼一个也支持提升的幺半群?