Python3字典过滤,为什么一种方法比另一种快?

2024-06-08 21:08:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个相似长度的列表idsdescriptions,它们都只包含字符串。 我有special_ids,它也是一个列表,包含ids的子集

我试过两种不同的方法

# 1
filtered = {k:v for k,v in zip(ids, descriptions) if k in special_ids}

# 2
filtered = {k:v for k,v in zip(ids, descriptions)}
filtered = {k: v for k,v in filtered if k in special_ids}

第二个更快。我说的是len(ids)是370k~而len(special_ids)是1.2k~

为什么第二个跑得这么快

旁注: 在实际问题中,ids的元素是编码字符串的一个元素列表,所以实际上我像k[0].decode() for k in ids一样对它们进行解包,在每个解决方案中,我认为这并不重要


Tags: 方法字符串inids元素编码列表for