如何有效地检查第一个具有python概念的列表

电子杂志

我有5个清单,如下所示。

list1 = [[111, ["food", "fruits", "vegetables"]], [112, ["mango", "apples", "grapes", "pears", "passion fruit"]]]
list2 = [[110, ["transport", "car", "van", "bus", "jeep"]], [109, ["trams", "trains", "passenger", "driver"]], [108, ["traffic", "lights"]]]
list3 = [[111, ["book", "letters", "library", "reading"]], [112, ["education", "jobs", "companies", "salary"]]]
list4 = [[111, ["food", "curry", "spices", "rice", "fruits", "vegetables"]], [112, ["fruits", "vegetables", "farms", "farmers"]]]
list5 = [[111, ["food", "industry", "delivery"]], [112, ["fresh", "curry", "food", "pears", "passion fruit"]]]

我也有一个概念清单。

myconcepts = ["fruits", "curry"]

我想找到第一个在列表中有概念的myconcepts列表。

"fruits" -> list1
"curry" -> list4

我目前正在使用以下代码来执行此操作

mylists = [list1, list2, list3, list4, list5]
for concept in myconcepts:
   initial_list = ""
   counting = 1

   for mylist in mylists:
        for item in mylist:
            if concept in item[1]:
                initial_year = str(counting)
                break

        if len(initial_year) > 0:
            break
        else:
            counting = counting + 1
 print(counting)

对于较小的数据集,这很好用。但是,我有一个庞大的数据集,其中包含近25个列表,每个列表都有近500万条记录。我的概念列表大约是15000。因此,我的代码需要大量时间来运行。我想知道是否在python中有更有效的方法?

如果需要,我很乐意提供更多详细信息。

先生先生

这是一种使用的方法,与中的查找相比set,它将加快使用的值in查找list

list1 = [[111, ["food", "fruits", "vegetables"]], [112, ["mango", "apples", "grapes", "pears", "passion fruit"]]]
list2 = [[110, ["transport", "car", "van", "bus", "jeep"]], [109, ["trams", "trains", "passenger", "driver"]], [108, ["traffic", "lights"]]]
list3 = [[111, ["book", "letters", "library", "reading"]], [112, ["education", "jobs", "companies", "salary"]]]
list4 = [[111, ["food", "curry", "spices", "rice", "fruits", "vegetables"]], [112, ["fruits", "vegetables", "farms", "farmers"]]]
list5 = [[111, ["food", "industry", "delivery"]], [112, ["fresh", "curry", "food", "pears", "passion fruit"]]]

myconcepts = ["fruits", "curry"]

# flatten lists and generate frozensets
flatsets = [[frozenset(l[1]) for l in lists] for lists in [list1, list2, list3, list4, list5]]

# a function to retrieve indices for the strings to find
def get_idx(setlist, concept):
    for ix_f, fset in enumerate(setlist):
        for ix_s, s in enumerate(fset):
            if concept in s:
                return ix_f
    return None

# generate a list holding the index of each concept
ix_concepts = [None for _ in myconcepts]           
for ix_c, c in enumerate(myconcepts):
    ix_concepts[ix_c] = get_idx(flatsets, c)

# show result    
listnames = ['list1', 'list2', 'list3', 'list4', 'list5']    
for i, c in enumerate(myconcepts):
    print(f"concept '{c}' found first in {listnames[ix_concepts[i]]}")
# concept 'fruits' found first in list1
# concept 'curry' found first in list4

但是,鉴于您的大量数据为15k * 25 * 5M,我认为这不是针对实际问题的1:1解决方案。如此处已经提到的,将需要进行复杂的数据准备。而且,我现在认为O(N²)的搜索算法(忽略平整列表所需的时间等)肯定会浪费很多时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有效地填补有序数字列表中的第一个空白

来自分类Dev

有效地将第一个月倒退

来自分类Dev

有效地将第一个限定词读入集合

来自分类Dev

有效地将第一个限定词读入集合

来自分类Dev

有效地将第一个月倒退

来自分类Dev

如何有效地创建一个带有define()列表的数组?

来自分类Dev

如果python中的每个列表中都存在一个元素,如何有效地串联列表

来自分类Dev

有效地查找表中不存在的第一个数字?

来自分类Dev

如何有效地从文本文件的每一行读取第一个字符?

来自分类Dev

如何使用字典中每个键的第一个值有效地创建优先级队列

来自分类Dev

如何有效地将一个NumericVectors列表组合成一个大的NumericVector?

来自分类Dev

Gridview文本框有效地获取第一个和最后一个索引

来自分类Dev

如何有效地获取具有唯一值的索引列表?

来自分类Dev

如何在Python中有效地从一个巨大的块中提取具有偏移量的字节?

来自分类Dev

如何在Python中有效地从一个巨大的块中提取具有偏移量的字节?

来自分类Dev

如何在Python中有效地从一个巨大的块中提取具有偏移量的字节?

来自分类Dev

如何有效地将字典中的字符串列表与Python中的另一个字典列表进行比较?

来自分类Dev

如何有效地连接多个字符串从每一个对象列表变量?

来自分类Dev

如何有效地将一个表中的多个Excel表导入R列表?

来自分类Dev

有效地在多个排序列表中找到一个元素?

来自分类Dev

Python 2.6:如何在一个特定字段上有效地比较两个相同对象类型的列表?

来自分类Dev

R:使用一个列表有效地修改另一个列表

来自分类Dev

R:使用一个列表有效地修改另一个列表

来自分类Dev

以有效的方式从子列表的列表中删除第一个元素[python 3]

来自分类Dev

当输入大量的Python代码时,如何有效地找到一个范围内的完美平方

来自分类Dev

如何有效地将多个集合聚合到一个集合中

来自分类Dev

如何有效地从ByteBuf中获取一个短数组?

来自分类Dev

如何有效地将布尔表转换为一个热向量?

来自分类Dev

如何有效地散布一个numpy的二维数组

Related 相关文章

  1. 1

    有效地填补有序数字列表中的第一个空白

  2. 2

    有效地将第一个月倒退

  3. 3

    有效地将第一个限定词读入集合

  4. 4

    有效地将第一个限定词读入集合

  5. 5

    有效地将第一个月倒退

  6. 6

    如何有效地创建一个带有define()列表的数组?

  7. 7

    如果python中的每个列表中都存在一个元素,如何有效地串联列表

  8. 8

    有效地查找表中不存在的第一个数字?

  9. 9

    如何有效地从文本文件的每一行读取第一个字符?

  10. 10

    如何使用字典中每个键的第一个值有效地创建优先级队列

  11. 11

    如何有效地将一个NumericVectors列表组合成一个大的NumericVector?

  12. 12

    Gridview文本框有效地获取第一个和最后一个索引

  13. 13

    如何有效地获取具有唯一值的索引列表?

  14. 14

    如何在Python中有效地从一个巨大的块中提取具有偏移量的字节?

  15. 15

    如何在Python中有效地从一个巨大的块中提取具有偏移量的字节?

  16. 16

    如何在Python中有效地从一个巨大的块中提取具有偏移量的字节?

  17. 17

    如何有效地将字典中的字符串列表与Python中的另一个字典列表进行比较?

  18. 18

    如何有效地连接多个字符串从每一个对象列表变量?

  19. 19

    如何有效地将一个表中的多个Excel表导入R列表?

  20. 20

    有效地在多个排序列表中找到一个元素?

  21. 21

    Python 2.6:如何在一个特定字段上有效地比较两个相同对象类型的列表?

  22. 22

    R:使用一个列表有效地修改另一个列表

  23. 23

    R:使用一个列表有效地修改另一个列表

  24. 24

    以有效的方式从子列表的列表中删除第一个元素[python 3]

  25. 25

    当输入大量的Python代码时,如何有效地找到一个范围内的完美平方

  26. 26

    如何有效地将多个集合聚合到一个集合中

  27. 27

    如何有效地从ByteBuf中获取一个短数组?

  28. 28

    如何有效地将布尔表转换为一个热向量?

  29. 29

    如何有效地散布一个numpy的二维数组

热门标签

归档