根据某个属性查找列表中的唯一对象

时间:2017-04-11 06:22:01

标签: python-3.x

我有以下代码库:

from datetime import datetime
from operator import attrgetter

class Person:
    def __init__(self,name,day,month,year):
        self.name = name
        self.day = day
        self.mon = month
        self.year = year

    def __str__(self):
        if self.day < 10:
            day = "0" + str(self.day)
        else:
            day = str(self.day)
        if self.mon < 10:
            mon = "0" + str(self.mon)
        else:
            mon = str(self.mon)
        display = day + "-" + mon + "-" + str(self.year)
        return display

    def __repr__(self):
        if self.day < 10:
            day = "0" + str(self.day)
        else:
            day = str(self.day)
        if self.mon < 10:
            mon = "0" + str(self.mon)
        else:
            mon = str(self.mon)
        display = day + "-" + mon + "-" + str(self.year)
        return display

def sortdates(l1):
    for dates in l1:
        dates.finalbirthdate = datetime.strptime(repr(dates),"%d-%m-%Y")
    return sorted (l1,key=attrgetter('finalbirthdate'),reverse=True)

if __name__ == '__main__':
    p1 = Person("Subhayan",18,9,1984)
    p2 = Person("Poulomi",13,1,1988)
    p3 = Person("Dummy",13,1,1988)
    p4 = Person("Shaayan",25,11,1988)
    p5 = Person("Father",1,1,1954)

    check = sortdates([p1,p2,p3,p4,p5])
    for persons in check:
        print (persons)

现在,sortdates函数的主要目的是根据finalbirthdate属性对对象进行排序。

但是,如果我想根据finalbirthdate属性的值在该列表中找到唯一的内容。

因此,例如“Poulomi”和“dummy”对象都具有相同的finalbirthdate属性,因此我只想要其中一个而不是两个。

有办法做到这一点吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

将这些方法添加到班级

check = sortdates([p1,p2,p3,p4,p5])

并将check = sortdates(set([p1,p2,p3,p4,p5])) 更改为

int[] arr = new int[]{54,234,1,45,14,54};
int small = Arrays.stream(arr).reduce((x, y) -> x < y ? x : y).getAsInt();