我在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
答案 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)