@@ -338,53 +338,40 @@ def __lt__(self, other):
338338 if not isinstance (other , _BaseBagMixin ):
339339 return NotImplemented
340340 found_strict_difference = False # Until challenged.
341- for element , count in self .items ():
342- try :
343- other_count = other [element ]
344- except KeyError :
345- return False
346- if not (count <= other_count ):
341+ all_elements = set (other ) | set (self )
342+ for element in all_elements :
343+ if self [element ] > other [element ]:
347344 return False
348- elif count < other_count :
345+ elif self [ element ] < other [ element ] :
349346 found_strict_difference = True
350347 return found_strict_difference
351348
352349 def __le__ (self , other ):
353350 if not isinstance (other , _BaseBagMixin ):
354351 return NotImplemented
355352 for element , count in self .items ():
356- try :
357- other_count = other [element ]
358- except KeyError :
359- return False
360- if not (count <= other_count ):
353+ if count > other [element ]:
361354 return False
362355 return True
363356
364357 def __gt__ (self , other ):
365358 if not isinstance (other , _BaseBagMixin ):
366359 return NotImplemented
367360 found_strict_difference = False # Until challenged.
368- for element , count in self .items ():
369- try :
370- other_count = other [element ]
371- except KeyError :
372- continue
373- if not (count >= other_count ):
361+ all_elements = set (other ) | set (self )
362+ for element in all_elements :
363+ if self [element ] < other [element ]:
374364 return False
375- elif count > other_count :
365+ elif self [ element ] > other [ element ] :
376366 found_strict_difference = True
377367 return found_strict_difference
378368
379369 def __ge__ (self , other ):
380370 if not isinstance (other , _BaseBagMixin ):
381371 return NotImplemented
382- for element , count in self .items ():
383- try :
384- other_count = other [element ]
385- except KeyError :
386- continue
387- if not (count >= other_count ):
372+ all_elements = set (other ) | set (self )
373+ for element in all_elements :
374+ if self [element ] < other [element ]:
388375 return False
389376 return True
390377
0 commit comments