我有一个字符串列表和一本字典。例如:
a = ["a", "b", "c", "d"]
d = {
"1":
{
"ids": ["7612029690", "7612018248"],
"words": ["d", "o", "m"]
},
"2":
{
"ids": ["7612018249", "7612029691"],
"words": ["a", "b", "c"]
},
....
}
我需要从dkey"words"的列表中找到具有最多元素的字典元素a。以下是计算方法。
def find_best(a, d):
result = {"words": [], "intersactions": 0}
for v in d.values():
i = len(list(set(a) & set(v["words"])))
if i > result["intersactions"]:
result = {"words": v, "intersactions": i}
return result
如何加快搜索速度?建立数据索引会对此有所帮助吗?如果使用数据库和 sqlite3,代码会运行得更快吗?
首先,您可以在函数的开头将列表设置为一个集合。
其次,您不能将集合交集的结果转换为列表。
尽管即使在大量数据上增益也会非常小。
可能(没有什么可检查的),将保存替换为变量并与函数进行比较会略有增加
max: