Python:如何存储成对或字符串数组之间的映射和浮点以实现快速访问?

Python:如何存储成对或字符串数组之间的映射和浮点以实现快速访问?,python,string,list,dictionary,tuples,Python,String,List,Dictionary,Tuples,我有一个成对的数组。一对中的每个元素都是字符串列表。对于每一对,我计算一个浮点值(表示两个列表之间的相似性分数)。我需要的是将其存储在某种类型的对象中,以便能够快速检索给定相应对的浮点值(如果该对不存在,则为0) 我的第一个想法是创建一个字典,并使用一个表示一对的元组作为字典键,但是由于元组的每个元素都是一个列表,所以这不起作用 当然,我可以创建一个(list1,list2,score12)元组数组,但如果给定一个list1,list2对,则在其中搜索会太慢。有更好的选择吗? 您可以将列表转换为

我有一个成对的数组。一对中的每个元素都是字符串列表。对于每一对,我计算一个浮点值(表示两个列表之间的相似性分数)。我需要的是将其存储在某种类型的对象中,以便能够快速检索给定相应对的浮点值(如果该对不存在,则为0)

我的第一个想法是创建一个字典,并使用一个表示一对的元组作为字典键,但是由于元组的每个元素都是一个列表,所以这不起作用

当然,我可以创建一个
(list1,list2,score12)
元组数组,但如果给定一个
list1,list2
对,则在其中搜索会太慢。有更好的选择吗?

  • 您可以将列表转换为
    tuple
    s,然后一对tuple可以用作字典键

  • 您也可以尝试将这对字符串列表移动到某个类的单独对象中(给它一个适合您的字段的名称)并将其用作键,但请注意不要使用相同的列表生成新对象




第一种方法有一个缺点-您将无法执行适当的列表操作,因为它们将是
tuple
s。但是,虽然列表足够小,但性能降级可以忽略不计。

您可以使用字典将
list1
list2
转换为元组(元组是不可变的对象,它们可以是键)


编辑:显然,哈希不适用于列表:S

您可以发布一些示例数据吗?您如何搜索值?类似于
如果列表1中的val1和列表2中的val2
class Key:
    def __init__(self, lst1, lst2):
        self.lst1 = lst1
        self.lst2 = lst2

k = Key([], [])
d = {k: 1}  # d[k] would be fine, but d[Key([], [])] will raise KeyError
dictionary[(tuple(list1), tuple(list2))] = scorevalue(list1, list2)