python - 过滤字典的值

标签 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/

相关文章:

python - Python 字典 ".values()"是否按特定顺序返回列表? [Python 2]

Python:乘法覆盖

python - 使用不同的数组初始化数组

python - 如何使用 PyXll 将 Excel 单元格添加到 Python 字典

c++ - hash_map 和 map 哪个更快?少于 10000 件

python - 比较 Python 中嵌套字典的键和值

c# ToDictionary with ContainsKey 检查

python - 根据另一个文件中的行号从一个文件中提取行

python - Oauth2 lib 无法导入名称 'run'

python - 使用 Python 将文本文件中的复数转换为单数