在python中,如何确定两个列表是否具有相同的属性?
对于我的编码项目,我必须使用这段代码,看看是否有类似的属性。如果是的话, 我需要一个print语句说“列表具有相似的属性”,如果没有,那么应该有一个print语句说“这两个语句具有相同的属性”在python中,如何确定两个列表是否具有相同的属性?,python,Python,对于我的编码项目,我必须使用这段代码,看看是否有类似的属性。如果是的话, 我需要一个print语句说“列表具有相似的属性”,如果没有,那么应该有一个print语句说“这两个语句具有相同的属性” 类框: 定义初始化(self,date1,contents1,location1): self.date=date1 self.contents=contents1 self.location=位置1 框23=框(“2016年”、“病历”、“储藏室”) 第21栏=第21栏(“2018”、“洗液样本”、“候
类框:
定义初始化(self,date1,contents1,location1):
self.date=date1
self.contents=contents1
self.location=位置1
框23=框(“2016年”、“病历”、“储藏室”)
第21栏=第21栏(“2018”、“洗液样本”、“候诊室”)
box07=框(“2020”,“流感疫苗传单”,“接待台”)
打印(第23栏日期)
打印(第21框。目录)
打印(框07.位置)
如果要比较单个属性,可以使用
if box23.date == box21.date:
print("boxes have the same date")
else:
print("boxes have different dates")
如果要比较所有属性,只需比较\u dict\u
属性即可:
if box23.__dict__ == box21.__dict__:
print("boxes have the same attributes")
else:
print("boxes don't have the same attributes")
如果要获取两个对象上的所有属性:
def get_matching_attributes(instance1, instance2):
return [attribute for attribute in instance1.__dict__ if attribute in instance2.__dict__]
->返回所有匹配属性的列表
如果要获取位于两个对象且具有相同值的所有属性: 确保您还获得了上面定义的用于使用的函数
get_matching_attributes
->返回也具有相同值的所有匹配属性的列表
提示:如果您想获得一个tuble中所有匹配属性的列表,请将最后一列更改为
返回匹配的\u值
,并使用True
或False
指示属性在两个对象中是否具有相同的值。什么?什么清单?什么是列表属性?列表没有数据属性-它们有一堆方法和类似\uuuuuu class\uuuuuuuu
的东西,但就是这样。什么列表?这里的预期输出是什么?box23、box21和box07是列表,对吗?根本不是,它们是Box对象。不,它们是Box的实例。
def compare_matched_attribute_values(instance1, instance2):
matching_attributes = get_matching_attributes(instance1, instance2)
matching_values = []
for attribute in matching_attributes:
if instance1.__dict__[attribute] == instance2.__dict__[attribute]:
matching_values.append((attribute, True))
else:
matching_values.append((attribute, False))
return [obj[0] for obj in matching_values if obj[1] is True]