我有一个字典列表,如果两个键的值中有两个有一个已定义的字符串,我想对其进行筛选。
例如,下面列表中的过滤器(A=BBB和D=EEE) .
[{A:BBB, C:DDD, D:EEE,...}, {A:BBB, C:DDD, D:ESS,...},{A:BBB, C:ASD, D:EEE,...},{C:ASD, D:EEE,...},...]会输出
[{A:BBB, C:DDD, D:EEE,...},{A:BBB, C:ASD, D:EEE,...},...]任何帮助都将不胜感激!
发布于 2013-11-21 20:15:08
试试看,这是一个使用列表理解的单行信息:
# input data
lst = [{'A':'BBB', 'C':'DDD', 'D':'EEE'},
{'A':'BBB', 'C':'DDD', 'D':'ESS'},
{'A':'BBB', 'C':'ASD', 'D':'EEE'},
{'C':'ASD', 'D':'EEE'}]
# list of filters
flt = [('A', 'BBB'), ('D', 'EEE')]
# a list comprehension + all() will do the trick
[x for x in lst if all(x.get(k, None) == v for k, v in flt)]
=> [{'A': 'BBB', 'C': 'DDD', 'D': 'EEE'}, {'A': 'BBB', 'C': 'ASD', 'D': 'EEE'}]这种方法的好处是,您可以在筛选器中声明尽可能多的键/值对,无论如何,它都能工作。
https://stackoverflow.com/questions/20130885
复制相似问题