<分区>
我想过滤字典的值。
d1 = {'a': 0, 'b': 0, 'c': 8, 'd': 7}
执行此操作的 pythonic 方法是什么。
d={}
for k,v in d1.items():
if v>0:
d[k]=v
我无法使用过滤器获得相同的结果。
filter(..)
是否有任何优雅的 pythonic 方式来做到这一点?
标签 python dictionary
<分区>
我想过滤字典的值。
d1 = {'a': 0, 'b': 0, 'c': 8, 'd': 7}
执行此操作的 pythonic 方法是什么。
d={}
for k,v in d1.items():
if v>0:
d[k]=v
我无法使用过滤器获得相同的结果。
filter(..)
是否有任何优雅的 pythonic 方式来做到这一点?
最佳答案
您可以使用字典推导式来创建包含过滤值的字典,如下所示
>>> {key: d1[key] for key in d1 if d1[key] > 0}
{'c': 8, 'd': 7}
你也可以像这样使用dict.items()
>>> {key: value for key, value in d1.items() if value > 0}
{'c': 8, 'd': 7}
注意:使用 dict.iteritems()
将在 Python 2.7 中提高内存效率,因为 dict.items()
将创建一个包含所有键的元组列表-值对。
如果您的意图只是删除 0
的值,那么您甚至可以像这样缩短它
>>> {key: value for key, value in d1.items() if value}
{'c': 8, 'd': 7}
关于python - 过滤字典的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537608/