筛选字典列表的最快方法?

时间:2018-10-07 17:23:23

标签: python python-3.x performance

我有一个字典inserts列表,应将其插入数据库。由于某些元素已经在数据库db_entry_ids中,因此我想将它们过滤掉。现在,代码非常简单:

[d for d in inserts if d["entry_id"] not in db_entry_ids]

len(inserts) = 35000  
len(db_entry_ids) =280000

Python需要几分钟的时间。我希望有一些简单的方法可以提高效率。

PS:d["entry_id"]是一个字符串,而db_entry_ids是一个字符串列表。因此, id 可能会产生误导。

1 个答案:

答案 0 :(得分:3)

db_entry_ids转换为集合。集合中的not in操作更快。

db_entry_ids = set(db_entry_ids)
[d for d in inserts if d["entry_id"] not in db_entry_ids]

请参阅以下内容以供参考:https://wiki.python.org/moin/TimeComplexity