Python:根据两个属性对列表进行排序

雷米

我有以下种类的清单:

class Ind(object):
    def __init__(self,ID,mate):
        self.ID=ID
        self.mate=mate

population=[Ind(8,None), Ind(1,2), Ind(20,3), Ind(2,1), Ind(12,None), Ind(3,20), Ind(10,11), Ind(11,10)]

您可以将此列表population视为所有具有的个人的总体ID其中一些人有一个mate(出现在相同人口或相同列表中的个人)。mate值实际上ID是该队友的!因此,如果存在的一个实例Ind哪些属性ID等于12和mate等于34,那么就必须在其列表中的个体ID等于34,其mate等于12个人没有一个mate具有Nonemate属性。是否有意义?

我想对这个列表进行排序,以便第一个个体与最后一个个体交配,第二个个体与倒数第二个个体交配,依此类推...属性mate等于的个体None应该位于列表的中间。

有许多可能的输出适合我想要的。这是上述列表的这些输出的一个示例:

population=[Ind(1,2), Ind(20,3), Ind(10,11), Ind(8,None), Ind(12,None), Ind(11,10), Ind(3,20), Ind(2,1)]
怪异的

您可以尝试这样的事情:

def custom_sort(population):
    pop_dict = { ind.ID: ind for ind in population }

    start = []
    nones = []
    end = []
    for ind in population:
        if ind.mate is None:
            nones.append(ind)
        elif pop_dict[ind.mate] not in start:
            start.insert(0, ind)
            end.append(pop_dict[ind.mate])
    return start + nones + end

这是基于“成为伴侣”是一对一关系的假设。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据python中一个列表的值对两个嵌套列表进行排序

根据Javascript中两个对象属性的总和对列表进行排序

在Python中根据优先级的两个列表对多个列表进行排序

Java - 根据两个属性值对 JSONArray 进行排序

根据两个元素对元组列表进行排序

根据两个元素对元组列表进行排序

Python 和 OpenCV:根据两个标准对轮廓列表进行排序

按两个属性对jQuery列表进行排序

Python 3.x-根据另一个列表对一个列表进行排序,然后返回两个排序后的列表

Python通过两个键值对JSON列表进行排序

根据内部列表中的字段对Java中的两个嵌套列表进行排序和分组

根据创建日期在一个列表中对两个模型进行排序

如何通过两个属性和排序规则对对象列表进行排序

根据两个属性的值对数组中的对象进行排序

根据两个日期(创建日期和更新日期)对记录的对象列表进行排序

根据两个字典对列表进行排序

根据两个字典对列表元素进行排序

合并两个排序的python列表

如何在python中对列表中的两个列表路径的字符串进行排序?

根据第三个元素对列表进行排序,并返回两个第一个元素

Python:根据第三个数组对两个数组进行排序

在python中根据时间对两个日志数据数组进行排序

组合两个不同的数组列表并根据时间排序

用两个键对Python列表进行排序,但只有一个键相反

Python:基于无类型的第一个对两个列表进行排序

蟒蛇。根据两个键和一个字典对2D列表进行排序

通过两个不同的属性对项目进行排序

按两个不同的属性对集合进行排序

基于两个属性对类指针的向量进行排序?