使用字典理解过滤 defaultdict
Posted
技术标签:
【中文标题】使用字典理解过滤 defaultdict【英文标题】:Filtering defaultdict with dictionary comprehension 【发布时间】:2018-07-28 00:27:06 【问题描述】:我有一个默认字典,其中键是数字,值是列表,每个列表有两个条目。我想根据第一个条目按条件过滤。我在这里尝试使用建议: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 是否更有效?还有什么好方法呢?
谢谢!
【问题讨论】:
你能发布示例输入和所需的输出吗? 请不要发布代码链接。在问题本身中将代码作为格式化文本发布。提供minimal reproducible example 【参考方案1】:一个 dict 理解产生的就是——一个 dict。因为你过滤了,它现在是一个字典——而不是一个默认字典。如果您想要这种行为,则需要将其包装在 defaultdict
中。
除非在此块中对性能有强烈需求,否则请坚持使用该方法。这是最干净的。但是don't prematurely optimize。分析您的代码并加快速度较慢的部分。
【讨论】:
以上是关于使用字典理解过滤 defaultdict的主要内容,如果未能解决你的问题,请参考以下文章