跟进最近的问题 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/