字典的过滤值[重复]

Posted

技术标签:

【中文标题】字典的过滤值[重复]【英文标题】:Filter values of dictionary [duplicate] 【发布时间】:2015-02-16 17:03:29 【问题描述】:

我想过滤字典的值。

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方式来做到这一点?

【问题讨论】:

【参考方案1】:

过滤功能方法来满足您的要求。

def f(x):
    return x[1]>0
d1 = 'a': 0, 'b': 0, 'c': 8, 'd': 7
filter(f, d1.items())

或者你可以使用 lambda 函数,像这样,更简单:

filter(lambda x:x[1]>0, d1.items())

【讨论】:

【参考方案2】:

您可以使用字典推导式,用过滤后的值创建字典,像这样

>>> 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

注意:在 Python 2.7 中使用dict.iteritems() 将更节省内存,因为dict.items() 将创建一个包含所有键值对的元组列表。

如果您的意图只是删除 0 的值,那么您甚至可以像这样缩短它

>>> key: value for key, value in d1.items() if value
'c': 8, 'd': 7

【讨论】:

以上是关于字典的过滤值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在字典中查找重复值并打印重复元素的键

在字典列表中查找重复值

python字典值和键[重复]

空数据框,用字典过滤数据框

包含具有重复值的字典的字典组数组

搜索特定值的嵌套字典列表[重复]