在Python中过滤字典的最佳方法

leo*_*ora 15 python lambda dictionary

我有一个字符串键和浮点值的字典.

 mydict = {}
 mydict["joe"] = 20
 mydict["bill"] = 20.232
 mydict["tom"] = 0.0
Run Code Online (Sandbox Code Playgroud)

我想过滤字典只包含值大于零的对.

在C#中,我会做这样的事情:

   dict = dict.Where(r=>r.Value > 0);
Run Code Online (Sandbox Code Playgroud)

Python中的等效代码是什么?

kin*_*all 44

d = dict((k, v) for k, v in d.iteritems() if v > 0)
Run Code Online (Sandbox Code Playgroud)

在Python 2.7及更高版本中,有更好的语法:

d = {k: v for k, v in d.items() if v > 0}
Run Code Online (Sandbox Code Playgroud)

请注意,这不是严格意义上的过滤器,因为它确实创建了一个新字典.

  • 将其更改为测试“k”而不是“v”? (2认同)