Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于相互比较200k字符串的数据结构_Python_Data Structures_String Matching - Fatal编程技术网

Python 用于相互比较200k字符串的数据结构

Python 用于相互比较200k字符串的数据结构,python,data-structures,string-matching,Python,Data Structures,String Matching,我有20万根弦。我需要在那个集合中找到相似的字符串。我预计集合中类似字符串的数量将非常少。请提供有效的数据结构 如果我在寻找精确匹配的字符串,我可以使用一个简单的散列。但是,在我的例子中,“相似性”是自定义定义的:如果两个字符串中80%的字符相同,那么它们的顺序就不重要了 我不想调用函数查找“相似性”~(200k*100k)次。欢迎提供任何建议,如字符串预处理技术、高效数据结构等。谢谢。我了解到,只有当两个字符串之间的字符串长度差为字符串长度的平均值与最小值和最大值时,距离比才可能>=0.85?

我有20万根弦。我需要在那个集合中找到相似的字符串。我预计集合中类似字符串的数量将非常少。请提供有效的数据结构

如果我在寻找精确匹配的字符串,我可以使用一个简单的散列。但是,在我的例子中,“相似性”是自定义定义的:如果两个字符串中80%的字符相同,那么它们的顺序就不重要了


我不想调用函数查找“相似性”~(200k*100k)次。欢迎提供任何建议,如字符串预处理技术、高效数据结构等。谢谢。

我了解到,只有当两个字符串之间的字符串长度差为字符串长度的平均值与最小值和最大值时,距离比才可能>=0.85?你可以制作一个柱状图,每个字符串都有一个柱状图等级,然后你可以简单地按一个比率将它们组合在一起,在这种情况下,80%的
'cat'
与你描述中的
'abracatabra
有100%的相似性,但
'abracatabra'
'cat'
的相似性不到80%。对吗?我的观点是“相似性”并没有很好的定义。我想到的第一件事是不比较。散列函数怎么样。我在stackoverflow上做了一点搜索,如果你想用这个函数比较每个字符串,你可以在itertools中对str1,str2使用
。组合(string_list,2):match=jaro(str1,str2)>0.85
也许你可以使用,或者至少探索相关的算法?