Python索引dict具有不同的对象属性

时间:2018-03-08 08:28:27

标签: python python-3.x

我在Python中有一组共享某些属性的对象,我希望能够根据其中的一些快速查找对象。

是否有公开API的软件包允许您执行此类操作?或者我需要自己编写吗?

作为一个更深入的解释,我正在寻找这样的事情:

class User:
   def __init__(self, name):
      self.id = self.__hash__()
      self.name = name

mydict = AwesomeDict(keys=["name", "id"])
user1 = User("foo")
user2 = User("bar")
mydict.add(user1)
mydict.add(user2)
mydict.lookup_by("name", "foo")
# => user1

mydict.lookup_by("id", 1221332114)
# => user2

1 个答案:

答案 0 :(得分:0)

对于较大的数据,这可能效率不高,但对于小的情况,您可以编写这样的简单函数。

class User:
    def __init__(self, name):
        self.id = self.__hash__()
        self.name = name

    def __repr__(self):
        return "(object: {} at: {})".format(self.name, self.id)


def lookup_by(mydict, look_by, key):
    for obj in mydict:
        if getattr(obj, look_by) == key:
            return obj
    return False

my_list = []
user1 = User("foo")
user2 = User("bar")

my_list.append(user1)
my_list.append(user2)
print(user2.id)
print(lookup_by(my_list, "name", "foo"))
print(lookup_by(my_list, "id", user2.id))

出:

(object: foo at: 2550687)
(object: bar at: 2550707)