使用字典理解过滤 defaultdict

Filtering defaultdict with dictionary comprehension

我有一个 defaultdict,其中键是一个数字,值是列表,每个列表都有两个条目。我想根据第一个条目按条件进行过滤。我尝试使用此处的建议:filter items in a python dictionary where keys contain a specific string

这是我使用的代码:

circuits = {k:v for k,v in circuits.iteritems() if (v[0]+weightlimit <= histotal) in k}

在这段代码 运行 之后,我在我的代码中唯一使用字典的地方收到了关于缺少键的错误。

这当然意味着有问题,因为 defaultdict 不会那样做。所以好像字典推导会把defaultdict改成字典。

最好的做法是什么?使用不同的过滤方法更有效,还是以某种方式将我的字典转换为 defaultdict 更有效?什么是做这两者的好方法?

谢谢!

听写理解就是这样——听写。因为你过滤了,所以它现在是一个字典——而不是一个默认字典。如果您想要这种行为,则需要将其包装在 defaultdict 中。

除非在此块中对性能有强烈需求,否则请坚持使用该方法。这是最干净的。但是don't prematurely optimize。分析您的代码并加快慢速部分的速度。