Searching a list of objects in Python

后端 未结 9 1439
滥情空心
滥情空心 2020-12-02 07:42

Let\'s assume I\'m creating a simple class to work similar to a C-style struct, to just hold data elements. I\'m trying to figure out how to search a list of objects for ob

9条回答
  •  感动是毒
    2020-12-02 07:53

    You should add a __eq__ and a __hash__ method to your Data class, it could check if the __dict__ attributes are equal (same properties) and then if their values are equal, too.

    If you did that, you can use

    test = Data()
    test.n = 5
    
    found = test in myList
    

    The in keyword checks if test is in myList.

    If you only want to a a n property in Data you could use:

    class Data(object):
        __slots__ = ['n']
        def __init__(self, n):
            self.n = n
        def __eq__(self, other):
            if not isinstance(other, Data):
                return False
            if self.n != other.n:
                return False
            return True
        def __hash__(self):
            return self.n
    
        myList = [ Data(1), Data(2), Data(3) ]
        Data(2) in myList  #==> True
        Data(5) in myList  #==> False
    

提交回复
热议问题