Python 3.x 基于某些属性查找列表中的唯一对象
我有以下代码库:Python 3.x 基于某些属性查找列表中的唯一对象,python-3.x,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)
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)
从日期时间导入日期时间
从运算符导入吸引器
班长:
定义初始(自我、姓名、日、月、年):
self.name=名称
self.day=天
self.mon=月
self.year=年
定义(自我):
如果self.day<10:
day=“0”+str(自我日)
其他:
day=str(自我日)
如果self.mon<10:
mon=“0”+str(self.mon)
其他:
mon=str(self.mon)
显示=天+“-”+星期一+“-”+str(自身年份)
返回显示
定义报告(自我):
如果self.day<10:
day=“0”+str(自我日)
其他:
day=str(自我日)
如果self.mon<10:
mon=“0”+str(self.mon)
其他:
mon=str(self.mon)
显示=天+“-”+星期一+“-”+str(自身年份)
返回显示
def分类日期(l1):
对于l1中的日期:
dates.finalbirthdate=datetime.strtime(repr(日期),%d-%m-%Y)
返回排序(l1,key=attrgetter('finalbirthdate'),reverse=True)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
p1=人(“Subhayan”,1891984年)
p2=人(“Poulomi”,13,11988)
p3=人(“假人”,13,11988)
p4=人(“Shaayan”,25111988)
p5=人(“父亲”,1,11954)
检查=排序日期([p1、p2、p3、p4、p5])
受检人士:
印刷品(人)
现在,sortdates函数的主要用途是根据finalbirthdate属性对对象进行排序
但是,如果我想根据finalbirthdate属性的值在该列表中找出唯一性,该怎么办呢
例如,“Poulomi”和“dummy”对象都有相同的finalbirthdate属性,所以我只想取其中一个,而不是两个
有办法做到这一点吗
提前感谢。将这些方法添加到类中
def __eq__(self, other):
return self.day == other.day and self.mon == other.mon and self.year == other.year
def __hash__(self):
return hash(self.__str__())
并将check=sortdate([p1、p2、p3、p4、p5])
更改为
check = sortdates(set([p1,p2,p3,p4,p5]))
您不能获取相关列表的
set()
吗?可能重复的是我获取的集合如何仅基于finalbirthdate属性使其获取唯一?名称属性无论如何都会有所不同。非常感谢。你能不能在这个问题上多解释一下。我的意思是,这两个函数做什么?\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
形成被认为对于相等对象相等的整数值,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu