如何在python中的对象列表中加速查找

时间:2018-02-17 21:34:37

标签: python arrays list search hash

我有一个巨大的数组列表,每个数组都有一个长度为2.每个数组都包含一个字符串和一个int值。列表很大(之前提到的数百万个数组)。

问题是我想要查找数组中存在的字符串(而不是整个字符串)中的一些文本模式(非常频繁),因此我无法对数组或字符串进行哈希处理。

简单来说,我有一个关键字符串,我想比较该字符串的特定索引与列表中数组中每个字符串的相同索引。

当前代码:

def corners_exist(arr, data):   # arr is the key string and data is a large list of arrays
    for e in data:
        temp = e[0]  # every e in data is an array with a string of length 54 and an integer with e[0] being the string
        if arr[0] == temp[0] and arr[2] == temp[2] and arr[6] == temp[6] and arr[8] == temp[8] and arr[
        9] == temp[9] and arr[11] == temp[11] and arr[15] == temp[15] and arr[17] == temp[17] and arr[
        18] == temp[18] and arr[20] == temp[20] and arr[24] == temp[24] and arr[26] == temp[26] and arr[
        27] == temp[27] and arr[29] == temp[29] and arr[33] == temp[33] and arr[35] == temp[35] and arr[
        36] == temp[36] and arr[38] == temp[38] and arr[42] == temp[42] and arr[44] == temp[44] and arr[45] == temp[
            45] and arr[47] == temp[47] and arr[53] == temp[51] and arr[53] == temp[53]:
        return True
return False

1 个答案:

答案 0 :(得分:1)

您可以使用字典并放置列表中的所有信息。然后你可以在python中使用一个方法,你可以做这样的事情

  result=[]
  for key,value in dictionary.items():
      if  (key.startswith(pattern)):
           result.append(value)

其他方式是

  result=[]
  for key,value in dictionary.items():
      if  (pattern in key):
           result.append(value)

此致