[英]Python remove attribute from value of dict
想象一下下面的類:
class ThisObj:
def __init__(self, kleur, voedsel, isCool, omschrijving):
self.kleur = kleur
self.voedsel = voedsel
self.isCool = isCool
self.omschrijving = omschrijving
我正在創建這個類的兩個實例:
obj1 = ThisObj(12, "graan", False, "Cooleman")
obj2 = ThisObj(13, "water", True, "Gekkeman")
我將兩個實例都放入字典中:
dict = {"AAT_FAN_CORR_VSPD_STEP_MPV": obj1,
"C_AIM_ct_DPF-DeltaP_X": obj2}
我會對第二本字典做同樣的事情:
obj3 = ThisObj(12, "graan", False, "Watermeloen")
obj4 = ThisObj(14, "ranja", True, "Gekkeman")
dict2 = {"AAT_FAN_CORR_VSPD_STEP_MPV": obj3,
"C_AIM_ct_DPF-DeltaP_X": obj4}
兩個字典都填滿后,我想比較它們。 但沒有“voedsel”屬性。 比較它們應該如下所示:
del dict["voedsel"]
items = dict ^ dict2
這會在刪除時引發 Key 錯誤。
KeyError: 'voedsel'
所以我的問題是:如何在不考慮值的屬性之一的情況下比較這樣的兩個字典。 在對象進入字典之前無法更改對象,這是因為在實際情況下,我是從另一個不允許更改的腳本中獲取字典。
要比較忽略屬性之一的兩個對象,您可以定義__eq__
進行比較:
def __eq__(self,other):
return self.kleur == other.kleur and self.isCool == other.isCool and self.omschrijving == other.omschrijving
然后:
obj1 = ThisObj(13, "water", True, "Gekkeman")
obj2 = ThisObj(13, "ranja", True, "Gekkeman")
print(obj1 == obj2) # True
如果這是一次性比較而不是對象的定義特征,那么您仍然可以手動比較屬性:
def compare(a,b):
return a.kleur == b.kleur and a.isCool == b.isCool and a.omschrijving == b.omschrijving
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.