Python 函数式方法 : remove key from dict using filter

标签 python dictionary functional-programming

跟进最近的问题 Remove keys from object not in a list in python?

该问题原来是前一个问题的重复。那里的所有答案,以及其中投票最多的答案,都使用列表理解。我正在考虑一种功能性方法。如何使用 filter 完成此操作?

我们有:

testdict={'a':'vala', 'b':'valb', 'c':'valc','d':'vald'}
keep=['a','c']

我要

filter(isKept,testdict)

给予

{'a':'vala','c':'valc'}

我试着天真地将 isKept 定义为一个(键)或两个变量(键、值)的函数,但前者只是过滤掉正确的键,没有相应的值(即列表,而不是字典)。后一种方式甚至无法正确解析。

Python 中有字典过滤器吗?

请注意,testdict.pop(k) 不是我想要的,因为这会删除,但这里的问题是保留

最佳答案

说实话,使用推导式已经很实用了,但如果这不是你想要的 toolz库提供了一组不错的函数,包括 keyfilter:

>>> from toolz.dicttoolz import keyfilter
>>> to_keep = lambda key: key in set(keep)
>>> keyfilter(to_keep, testdict)
{'a': 'vala', 'c': 'valc'}

关于Python 函数式方法 : remove key from dict using filter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32728058/

相关文章:

python - 参数函数求和

python - 我可以为我的枚举的两个不同成员使用一个别名吗

python - Django 报告实验室 : using Drawing object to create PDF and return via Httpresponse

Python 添加到字典循环

oop - 面向对象程序员的方案

recursion - 为什么 Lean 强制递归类型参数出现在非递归类型参数之后?

python - 如何在不明确接受的情况下让自己进入 Python 方法

python - swift中类似python的map函数

r - 将 R 中的数据帧转换为 'Python dictionary'

java - 如果您将 Scala 用作命令式语言,那么您做错了吗?