散列列表中对象的元素以创建快速查找[python]



我对这个c#问题有类似的需求。我有一份课程清单。该类包含对象名称的同义词列表。我想建立一个数据结构,在这里我可以输入其中一个同义词,并返回任何具有该同义词的类对象。列表中的对象最好不会被复制,而是在内存中被引用。类对象可以是不可变的,因为它的值不会改变。这里有一些伪代码来解释我的情况:

class MyObject:

def __init__(self,name):
self.name = name # name of an object such as "cup"
self.synonyms = get_synonyms(name) # returns a list of strings (i.e.) [ "coffee cup", "mug", "dixie cup", . . . ]
my_objects = create_1000_MyObjects() # returns a list of 1000 of the above classes
new_data_structure = ?
objects_containing_synonym = new_data_structure.find_objects("cofee cup") # would return any object in the above list that holds "coffee cup" in its list of synonyms, so would return object cup

值得注意的是,可能需要返回多个对象。我想使用一些像字典一样的哈希解决方案,这样查找就很快了。

dict将一个同义词映射到对象列表即可。collections.defaultdict无需首先测试字典以查看是否存在键。

import collections
new_data_structure = defaultdict(list)
my_object = create the object
new_data_structure.update((synonym, my_object) for synonym in my_object.synonyms)
all_coffee_cup_objects = new_data_structure["coffee_cups"]

最新更新